using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using NoteBoxz.Zapper.NetcodePatcher; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [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("DunGen")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.ASPP")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.UnityNav")] [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("Unity.XR.CoreUtils")] [assembly: IgnoresAccessChecksTo("Unity.XR.Management")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.ConformanceAutomation")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MetaQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MockRuntime")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.OculusQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.RuntimeDebugger")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpatialTracking")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("UnityEngine.XR.LegacyInputHelpers")] [assembly: AssemblyCompany("NoteBoxz.Zapper")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2")] [assembly: AssemblyProduct("Zapper")] [assembly: AssemblyTitle("NoteBoxz.Zapper")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.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 Zapper { [BepInPlugin("NoteBoxz.Zapper", "Zapper", "1.0.2")] public class Zapper : BaseUnityPlugin { internal static AssetBundle assetBundle; internal static ConfigEntry BlacklistConfig; internal static ConfigEntry VisualScanTime; internal static ConfigEntry EpilepsySafeMode; public static Zapper Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; BindConfig(); NetcodePatcher(); Patch(); LoadAssetBundle(); Item val = assetBundle.LoadAsset("Assets/LethalCompany/Mods/ZapMod/Zapper.asset"); Utilities.FixMixerGroups(val.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); TerminalNode val2 = assetBundle.LoadAsset("Assets/LethalCompany/Mods/ZapMod/ZapperInfo.asset"); Items.RegisterShopItem(val, (TerminalNode)null, (TerminalNode)null, val2, 625); Logger.LogInfo((object)"NoteBoxz.Zapper v1.0.2 has loaded!"); } private void BindConfig() { BlacklistConfig = ((BaseUnityPlugin)this).Config.Bind("General", "Blacklist", "", "Comma-separated list of enemy names that won't be lit up by the Zapper. Names are matched case-insensitively. Example: Centipede, Bunker Spider, Hoarding bug"); VisualScanTime = ((BaseUnityPlugin)this).Config.Bind("General", "VisualScanTime", 0.2f, "Duration of the visual targeting scan effect in seconds. Basically controls how long the screen goes dark for when zapping."); EpilepsySafeMode = ((BaseUnityPlugin)this).Config.Bind("Accessibility", "EpilepsySafeMode", false, "When enabled, the screen does not darken and the target cubes never light up when zapping. Targeting and damage still work the same; only the flashing visual effect is disabled."); } internal static HashSet GetBlacklist() { HashSet hashSet = new HashSet(StringComparer.OrdinalIgnoreCase); string[] array = BlacklistConfig.Value.Split(','); foreach (string text in array) { string text2 = text.Trim(); if (text2.Length > 0) { hashSet.Add(text2); } } return hashSet; } internal static void LoadAssetBundle() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (directoryName == null) { throw new InvalidOperationException("Unable to determine assembly location."); } string text = Path.Combine(directoryName, "zapmod"); assetBundle = AssetBundle.LoadFromFile(text); if ((Object)(object)assetBundle == (Object)null) { throw new InvalidOperationException("Failed to load AssetBundle."); } } internal static void Patch() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("NoteBoxz.Zapper"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(); Logger.LogDebug((object)"Finished patching!"); } internal static void Unpatch() { Logger.LogDebug((object)"Unpatching..."); Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } Logger.LogDebug((object)"Finished unpatching!"); } private void NetcodePatcher() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } public class ZapperItem : GrabbableObject { [CompilerGenerated] private sealed class d__13 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public Vector3 origin; public Vector3 forward; public float coneAngleDegrees; public float maxDistance; public ZapperItem <>4__this; private bool 5__1; private HashSet 5__2; private float 5__3; private List 5__4; private Collider[] 5__5; private float 5__6; private GameObject 5__7; private Collider[] <>s__8; private int <>s__9; private Collider 5__10; private PlayerControllerB 5__11; private EnemyAI 5__12; private Vector3 5__13; private float 5__14; private int 5__15; private Collider 5__16; private float 5__17; private PlayerControllerB 5__18; private EnemyAI 5__19; private Vector3 5__20; private Vector3 5__21; private GameObject 5__22; private float 5__23; private RaycastHit 5__24; private bool 5__25; private Renderer 5__26; private Vector3 5__27; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; 5__4 = null; 5__5 = null; 5__7 = null; <>s__8 = null; 5__10 = null; 5__11 = null; 5__12 = null; 5__16 = null; 5__18 = null; 5__19 = null; 5__22 = null; 5__26 = null; <>1__state = -2; } private bool MoveNext() { //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_0671: Expected O, but got Unknown //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_043c: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_0476: Unknown result type (might be due to invalid IL or missing references) //IL_0481: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_04a1: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Unknown result type (might be due to invalid IL or missing references) //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_0511: Unknown result type (might be due to invalid IL or missing references) //IL_0517: Unknown result type (might be due to invalid IL or missing references) //IL_0526: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Expected O, but got Unknown //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Expected O, but got Unknown Bounds bounds; switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__1 = Zapper.EpilepsySafeMode.Value; if (((NetworkBehaviour)((GrabbableObject)<>4__this).playerHeldBy).IsOwner && !5__1) { <>4__this.DarkenScreen.SetActive(true); } <>4__this.ClearZapTargets(); 5__2 = Zapper.GetBlacklist(); 5__3 = Zapper.VisualScanTime.Value; 5__4 = new List(); 5__5 = Physics.OverlapSphere(origin, maxDistance); <>s__8 = 5__5; for (<>s__9 = 0; <>s__9 < <>s__8.Length; <>s__9++) { 5__10 = <>s__8[<>s__9]; if (!((Object)(object)5__10 == (Object)null) && (((Component)5__10).CompareTag("Enemy") || ((Component)5__10).CompareTag("Player"))) { 5__11 = ((Component)5__10).gameObject.GetComponentInParent(); 5__12 = ((Component)5__10).gameObject.GetComponentInParent(); if ((!((Object)(object)5__11 != (Object)null) || !((Object)(object)5__11 == (Object)(object)((GrabbableObject)<>4__this).playerHeldBy)) && (!((Object)(object)5__12 != (Object)null) || !((Object)(object)5__12.enemyType != (Object)null) || !5__2.Contains(5__12.enemyType.enemyName))) { bounds = 5__10.bounds; 5__13 = ((Bounds)(ref bounds)).center - origin; 5__14 = Vector3.Angle(forward, 5__13); if (5__14 <= coneAngleDegrees) { 5__4.Add(5__10); } 5__11 = null; 5__12 = null; 5__10 = null; } } } <>s__8 = null; 5__6 = Time.time; 5__7 = null; 5__15 = 0; goto IL_0630; case 1: <>1__state = -1; goto IL_064c; case 2: <>1__state = -1; goto IL_064c; case 3: <>1__state = -1; goto IL_0603; case 4: { <>1__state = -1; break; } IL_0630: if (5__15 < 5__4.Count) { 5__16 = 5__4[5__15]; if ((Object)(object)5__16 != (Object)null) { 5__18 = ((Component)5__16).gameObject.GetComponentInParent(); 5__19 = ((Component)5__16).gameObject.GetComponentInParent(); bounds = 5__16.bounds; 5__20 = ((Bounds)(ref bounds)).center; 5__21 = 5__20 - origin; if ((Object)(object)5__7 != (Object)null) { Object.Destroy((Object)(object)5__7); } 5__22 = Object.Instantiate(<>4__this.zapTargetPrefab, 5__20, Quaternion.LookRotation(forward)); 5__7 = 5__22; if ((Object)(object)5__22 != (Object)null) { Transform transform = 5__22.transform; bounds = 5__16.bounds; transform.localScale = ((Bounds)(ref bounds)).size; <>4__this.zapTargets.Add(5__22); if (!((NetworkBehaviour)((GrabbableObject)<>4__this).playerHeldBy).IsOwner | 5__1) { 5__26 = 5__22.GetComponentInChildren(); 5__26.enabled = false; 5__26 = null; } } 5__23 = ((Vector3)(ref 5__21)).magnitude; 5__25 = Physics.Raycast(origin, forward, ref 5__24, 5__23, StartOfRound.Instance.collidersAndRoomMaskAndDefault); if (!5__25) { 5__27 = origin + ((Vector3)(ref forward)).normalized * 5__23; bounds = 5__16.bounds; if (((Bounds)(ref bounds)).Contains(5__27)) { Zapper.Logger.LogInfo((object)("Zapped " + ((Object)5__16).name)); if ((Object)(object)5__18 != (Object)null && ((NetworkBehaviour)5__18).IsOwner) { 5__18.DamagePlayer(25, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); <>2__current = (object)new WaitForSeconds(5__3); <>1__state = 1; return true; } if ((Object)(object)5__19 != (Object)null && ((NetworkBehaviour)5__19).IsOwner) { 5__19.HitEnemy(1, ((GrabbableObject)<>4__this).playerHeldBy, true, -1); <>2__current = (object)new WaitForSeconds(5__3); <>1__state = 2; return true; } } } 5__18 = null; 5__19 = null; 5__22 = null; } 5__17 = 5__6 + 5__3 * (float)(5__15 + 1) / (float)5__4.Count; goto IL_0603; } goto IL_064c; IL_064c: if (5__4.Count == 0) { <>2__current = (object)new WaitForSeconds(5__3); <>1__state = 4; return true; } break; IL_0603: if (Time.time < 5__17) { <>2__current = null; <>1__state = 3; return true; } 5__16 = null; 5__15++; goto IL_0630; } <>4__this.zapCoroutine = null; <>4__this.EndZapScan(); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public GameObject DebugArrow = null; public GameObject zapTargetPrefab = null; public GameObject DarkenScreen = null; public AudioSource gunShootAudio = null; public AudioClip zapSound = null; public List zapTargets = new List(); private Coroutine? zapCoroutine; public override void Start() { ((GrabbableObject)this).Start(); Transform val = ((Component)this).transform.Find("ZapModel"); if ((Object)(object)val == (Object)null) { Zapper.Logger.LogWarning((object)"Could not find a child named \"ZapModel\" to set render queue on."); return; } Renderer[] componentsInChildren = ((Component)val).GetComponentsInChildren(true); foreach (Renderer val2 in componentsInChildren) { Material[] materials = val2.materials; foreach (Material val3 in materials) { } } } public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); if (((NetworkBehaviour)this).IsOwner && zapCoroutine == null) { ShootGunAndSync(); } } public void ShootGunAndSync() { //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_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)GameNetworkManager.Instance.localPlayerController.gameplayCamera).transform.position; Vector3 forward = ((Component)GameNetworkManager.Instance.localPlayerController.gameplayCamera).transform.forward; Zapper.Logger.LogInfo((object)"Calling shoot gun...."); ShootGun(position, forward); Zapper.Logger.LogInfo((object)"Calling shoot gun and sync"); ShootGunServerRpc(position, forward); } [ServerRpc(RequireOwnership = false)] public void ShootGunServerRpc(Vector3 shotgunPosition, Vector3 shotgunForward) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2786371283u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref shotgunPosition); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref shotgunForward); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2786371283u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; ShootGunClientRpc(shotgunPosition, shotgunForward); } } } [ClientRpc] public void ShootGunClientRpc(Vector3 shotgunPosition, Vector3 shotgunForward) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0110: 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(1548251590u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref shotgunPosition); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref shotgunForward); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1548251590u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; Zapper.Logger.LogInfo((object)"Shoot gun client rpc received"); if (((NetworkBehaviour)this).IsOwner) { Zapper.Logger.LogInfo((object)"Skipping ClientRpc echo on owner"); } else { ShootGun(shotgunPosition, shotgunForward); } } } public void ShootGun(Vector3 shotgunPosition, Vector3 shotgunForward) { //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) if (base.isHeld && (Object)(object)base.playerHeldBy != (Object)null && (Object)(object)base.playerHeldBy == (Object)(object)GameNetworkManager.Instance.localPlayerController) { base.playerHeldBy.playerBodyAnimator.SetTrigger("ShootShotgun"); } gunShootAudio.PlayOneShot(zapSound); WalkieTalkie.TransmitOneShotAudio(gunShootAudio, zapSound, 1f); DebugArrow.transform.SetParent((Transform)null); DebugArrow.transform.position = shotgunPosition; DebugArrow.transform.forward = shotgunForward; if (zapCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(zapCoroutine); EndZapScan(); } zapCoroutine = ((MonoBehaviour)this).StartCoroutine(ZapCorutine(shotgunPosition, shotgunForward)); } [IteratorStateMachine(typeof(d__13))] private IEnumerator ZapCorutine(Vector3 origin, Vector3 forward, float coneAngleDegrees = 90f, float maxDistance = 50f) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__13(0) { <>4__this = this, origin = origin, forward = forward, coneAngleDegrees = coneAngleDegrees, maxDistance = maxDistance }; } private void EndZapScan() { if ((Object)(object)DarkenScreen != (Object)null) { DarkenScreen.SetActive(false); } ClearZapTargets(); } private void ClearZapTargets() { for (int num = zapTargets.Count - 1; num >= 0; num--) { if ((Object)(object)zapTargets[num] != (Object)null) { Object.Destroy((Object)(object)zapTargets[num]); } } zapTargets.Clear(); } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2786371283u, new RpcReceiveHandler(__rpc_handler_2786371283), "ShootGunServerRpc"); ((NetworkBehaviour)this).__registerRpc(1548251590u, new RpcReceiveHandler(__rpc_handler_1548251590), "ShootGunClientRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_2786371283(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 shotgunPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref shotgunPosition); Vector3 shotgunForward = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref shotgunForward); target.__rpc_exec_stage = (__RpcExecStage)1; ((ZapperItem)(object)target).ShootGunServerRpc(shotgunPosition, shotgunForward); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1548251590(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 shotgunPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref shotgunPosition); Vector3 shotgunForward = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref shotgunForward); target.__rpc_exec_stage = (__RpcExecStage)1; ((ZapperItem)(object)target).ShootGunClientRpc(shotgunPosition, shotgunForward); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ZapperItem"; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "NoteBoxz.Zapper"; public const string PLUGIN_NAME = "Zapper"; public const string PLUGIN_VERSION = "1.0.2"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace NoteBoxz.Zapper.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }