using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ShootingshootingAway")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2+b35503d6a2cddb2a193d0731809a75e18384f9c9")] [assembly: AssemblyProduct("ShootingshootingAway")] [assembly: AssemblyTitle("ShootingshootingAway")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [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] [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 ShootingshootingAway { [HarmonyPatch] internal static class DartImpactHostPatch { private static readonly HashSet _neutralizing = new HashSet(); private static readonly Dictionary _lastMasterApply = new Dictionary(); private const float NeutralizeInterval = 0.5f; private const float NeutralizeSubtract = -500f; private const float HardCapSeconds = 20f; private const float MasterApplyCooldown = 0.6f; internal static bool MasterApplyReady(int viewId) { float realtimeSinceStartup = Time.realtimeSinceStartup; if (_lastMasterApply.TryGetValue(viewId, out var value) && realtimeSinceStartup - value < 0.6f) { return false; } _lastMasterApply[viewId] = realtimeSinceStartup; return true; } [HarmonyPatch(typeof(Action_RaycastDart), "RPC_DartImpact")] [HarmonyPrefix] private static bool OnDartImpact(Action_RaycastDart __instance, int characterID, Vector3 origin, Vector3 endpoint) { //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) if (!PhotonNetwork.IsMasterClient) { return true; } bool flag = !Plugin.EffectEnabled || BlowDartService.IsVanilla(Plugin.EffectType); ManualLogSource log = Plugin.Log; if (log != null) { log.LogInfo((object)("[ShootingAway] RPC_DartImpact master=" + PhotonNetwork.IsMasterClient + " char=" + characterID + " enabled=" + Plugin.EffectEnabled + " type=" + Plugin.EffectType.ToString() + " vanilla=" + flag)); } if (flag) { return true; } try { if ((Object)(object)__instance.dartVFX != (Object)null) { Object.Instantiate(__instance.dartVFX, endpoint, Quaternion.identity); } if ((Object)(object)GamefeelHandler.instance != (Object)null) { GamefeelHandler.instance.AddPerlinShakeProximity(endpoint, 5f, 0.2f, 15f, 10f); } if (characterID == -1) { return false; } if (!MasterApplyReady(characterID)) { return false; } PhotonView photonView = PhotonNetwork.GetPhotonView(characterID); Character val = (((Object)(object)photonView != (Object)null) ? ((Component)photonView).GetComponent() : null); if ((Object)(object)val == (Object)null || val.refs == null) { return false; } if ((Object)(object)val.data != (Object)null && val.data.dead) { return false; } ApplyReplacement(val, Plugin.EffectType, Plugin.EffectAmount); return false; } catch (Exception ex) { ManualLogSource log2 = Plugin.Log; if (log2 != null) { log2.LogError((object)ex); } } return true; } internal static void ApplyReplacement(Character target, BlowDartEffect effectType, float amount) { //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Invalid comparison between Unknown and I4 //IL_0157: 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_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) if (!Plugin.EffectEnabled || (Object)(object)target == (Object)null || target.refs == null || ((Object)(object)target.refs.view == (Object)null && (Object)(object)((MonoBehaviourPun)target).photonView == (Object)null) || ((Object)(object)target.data != (Object)null && target.data.dead)) { return; } STATUSTYPE? val = BlowDartService.ResolveStatusType(effectType); if (!val.HasValue) { return; } PhotonView val2 = (((Object)(object)target.refs.view != (Object)null) ? target.refs.view : ((MonoBehaviourPun)target).photonView); if ((int)val.GetValueOrDefault() == 6) { float[] array = new float[CharacterAfflictions.NumStatusTypes]; array[val.Value] = Mathf.Clamp(amount / 100f, 0f, 2f); SendStatusToOwner(val2, array); ManualLogSource log = Plugin.Log; if (log != null) { log.LogInfo((object)("[ShootingAway] 施加困倦:目标 " + val2.ViewID + " 量 " + array[val.Value])); } return; } float num = Mathf.Clamp(amount / 100f, 0f, 2f); float[] array2 = new float[CharacterAfflictions.NumStatusTypes]; array2[6] = -500f; SendStatusToOwner(val2, array2); float[] array3 = new float[CharacterAfflictions.NumStatusTypes]; array3[val.Value] = num; SendStatusToOwner(val2, array3); ManualLogSource log2 = Plugin.Log; if (log2 != null) { log2.LogInfo((object)("[ShootingAway] 施加替换状态:目标 " + val2.ViewID + " 类型 " + ((object)val.Value/*cast due to .constrained prefix*/).ToString() + " 量 " + num + "(压制睡眠 + 替换)")); } StartNeutralize(target); } private static void SendStatusToOwner(PhotonView view, float[] data) { if ((Object)(object)view == (Object)null) { return; } try { if (view.Owner != null && !view.Owner.IsLocal) { view.RPC("RPC_ApplyStatusesFromFloatArray", view.Owner, new object[1] { data }); } else { view.RPC("RPC_ApplyStatusesFromFloatArray", (RpcTarget)0, new object[1] { data }); } } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } private static void StartNeutralize(Character target) { if ((Object)(object)((MonoBehaviourPun)target).photonView == (Object)null) { return; } int viewID = ((MonoBehaviourPun)target).photonView.ViewID; if (_neutralizing.Add(viewID)) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogInfo((object)("[ShootingAway] 开始压制睡眠:目标 " + viewID)); } PushDrowsyDown(target); ((MonoBehaviour)Plugin.Instance).StartCoroutine(NeutralizeRoutine(target, viewID)); } } private static IEnumerator NeutralizeRoutine(Character target, int viewId) { float startedAt = Time.time; int pushes = 0; try { while ((Object)(object)target != (Object)null && target.refs != null && (Object)(object)target.refs.afflictions != (Object)null && (Object)(object)((MonoBehaviourPun)target).photonView != (Object)null && Time.time - startedAt < 20f) { yield return (object)new WaitForSeconds(0.5f); if ((Object)(object)target == (Object)null || target.refs == null || (Object)(object)target.refs.afflictions == (Object)null || (Object)(object)((MonoBehaviourPun)target).photonView == (Object)null) { break; } try { PushDrowsyDown(target); pushes++; } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } ManualLogSource log2 = Plugin.Log; if (log2 != null) { log2.LogInfo((object)("[ShootingAway] 压制结束:目标 " + viewId + " 次数 " + pushes)); } } finally { _neutralizing.Remove(viewId); } } private static void PushDrowsyDown(Character target) { if (!((Object)(object)target.refs.view == (Object)null) || !((Object)(object)((MonoBehaviourPun)target).photonView == (Object)null)) { PhotonView view = (((Object)(object)target.refs.view != (Object)null) ? target.refs.view : ((MonoBehaviourPun)target).photonView); float[] array = new float[CharacterAfflictions.NumStatusTypes]; array[6] = -500f; SendStatusToOwner(view, array); } } } [HarmonyPatch] internal static class InfiniteUsePatch { private const int BlowgunItemId = 70; [HarmonyPatch(typeof(Item), "Start")] [HarmonyPostfix] private static void OnItemStart(Item __instance) { EnsureInfinite(__instance); } [HarmonyPatch(typeof(Item), "SetItemInstanceDataRPC")] [HarmonyPostfix] private static void OnItemInstanceData(Item __instance) { EnsureInfinite(__instance); } private static void EnsureInfinite(Item item) { if (!PhotonNetwork.IsMasterClient || !Plugin.InfiniteDurability || (Object)(object)item == (Object)null || (item.itemID != 70 && !BlowDartService.IsBlowDart(item))) { return; } try { OptionableIntItemData data = item.GetData((DataEntryKey)2); if (data != null) { data.HasData = true; data.Value = -1; } } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } } [HarmonyPatch] internal static class ConsumePatch { [HarmonyPatch(typeof(Action_Consume), "RunAction")] [HarmonyPrefix] private static bool OnConsume(Action_Consume __instance) { if (!PhotonNetwork.IsMasterClient) { return true; } if (!Plugin.InfiniteDurability) { return true; } Item item = (((Object)(object)__instance != (Object)null) ? ((Component)__instance).GetComponent() : null); return !BlowDartService.IsBlowDart(item); } } [HarmonyPatch] internal static class CursorPatcher { [HarmonyPatch(typeof(CursorHandler), "Update")] [HarmonyPrefix] private static bool Block() { return !Plugin.MenuVisible; } } [HarmonyPatch] internal static class FreezeLookPatch { [HarmonyPatch(typeof(CharacterInput), "Sample")] [HarmonyPostfix] private static void ZeroLook(CharacterInput __instance) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) if (Plugin.MenuVisible && !((Object)(object)__instance == (Object)null)) { __instance.lookInput = Vector2.zero; __instance.usePrimaryIsPressed = false; __instance.usePrimaryWasPressed = false; __instance.usePrimaryWasReleased = false; __instance.useSecondaryIsPressed = false; __instance.useSecondaryWasPressed = false; __instance.useSecondaryWasReleased = false; __instance.interactIsPressed = false; __instance.interactWasPressed = false; __instance.interactWasReleased = false; } } } [HarmonyPatch] internal static class SelfHitTestPatch { [HarmonyPatch(typeof(Action_RaycastDart), "FireDart")] [HarmonyPrefix] private static bool OnFireDart(Action_RaycastDart __instance) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0144: 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_0162: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) if (!PhotonNetwork.IsMasterClient) { return true; } if (!Plugin.AllowSelfHit) { return true; } if (!Plugin.EffectEnabled) { return true; } try { if (Object.op_Implicit((Object)(object)__instance.shotSFX)) { __instance.shotSFX.Play(((Component)__instance).transform.position); } Vector3 position = ((Component)__instance).transform.position; Vector3 forward = ((Component)MainCamera.instance).transform.forward; Character localCharacter = Character.localCharacter; if ((Object)(object)localCharacter == (Object)null) { return false; } RaycastHit val = default(RaycastHit); if (!Physics.Raycast(position, forward, ref val, __instance.maxDistance, LayerMask.op_Implicit(HelperFunctions.terrainMapMask), (QueryTriggerInteraction)1)) { ((RaycastHit)(ref val)).distance = __instance.maxDistance; ((RaycastHit)(ref val)).point = position + forward * __instance.maxDistance; } Vector3 point = ((RaycastHit)(ref val)).point; RaycastHit[] array = Physics.SphereCastAll(position, __instance.dartCollisionSize, forward, ((RaycastHit)(ref val)).distance, LayerMask.GetMask(new string[1] { "Character" }), (QueryTriggerInteraction)1); RaycastHit[] array2 = array; for (int i = 0; i < array2.Length; i++) { RaycastHit val2 = array2[i]; if (Object.op_Implicit((Object)(object)((RaycastHit)(ref val2)).collider)) { Character componentInParent = ((Component)((RaycastHit)(ref val2)).collider).GetComponentInParent(); if (Object.op_Implicit((Object)(object)componentInParent) && !((Object)(object)componentInParent == (Object)(object)localCharacter)) { point = ((RaycastHit)(ref val2)).point; break; } } } Character val3 = FindTestTarget(localCharacter, position); if ((Object)(object)__instance.dartVFX != (Object)null) { Object.Instantiate(__instance.dartVFX, point, Quaternion.identity); } BlowDartEffect blowDartEffect = Plugin.EffectType; if (blowDartEffect == BlowDartEffect.Original) { blowDartEffect = BlowDartEffect.Drowsy; } if ((Object)(object)((MonoBehaviourPun)localCharacter).photonView != (Object)null) { int num = (((Object)(object)val3 != (Object)null && (Object)(object)((MonoBehaviourPun)val3).photonView != (Object)null) ? ((MonoBehaviourPun)val3).photonView.ViewID : (-1)); ((MonoBehaviourPun)localCharacter).photonView.RPC("OnShootAwayHit", (RpcTarget)0, new object[5] { num, position, point, (int)blowDartEffect, Plugin.EffectAmount }); } return false; } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } return true; } private static Character FindTestTarget(Character self, Vector3 origin) { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) Character val = null; float num = float.MaxValue; foreach (Character allCharacter in Character.AllCharacters) { if (!((Object)(object)allCharacter == (Object)null) && !((Object)(object)allCharacter == (Object)(object)self) && (!((Object)(object)allCharacter.data != (Object)null) || !allCharacter.data.dead) && !((Object)(object)((MonoBehaviourPun)allCharacter).photonView == (Object)null) && !allCharacter.isZombie) { float num2 = Vector3.Distance(origin, ((Component)allCharacter).transform.position); if (num2 < num) { num = num2; val = allCharacter; } } } if (!((Object)(object)val != (Object)null)) { return self; } return val; } } public class ShootAwayNet : MonoBehaviourPun { [PunRPC] public void OnShootAwayHit(int targetViewID, Vector3 origin, Vector3 endpoint, int effectType, float amount) { if (!PhotonNetwork.IsMasterClient || targetViewID == -1 || !DartImpactHostPatch.MasterApplyReady(targetViewID)) { return; } try { PhotonView photonView = PhotonNetwork.GetPhotonView(targetViewID); Character val = (((Object)(object)photonView != (Object)null) ? ((Component)photonView).GetComponent() : null); if (!((Object)(object)val == (Object)null) && val.refs != null) { DartImpactHostPatch.ApplyReplacement(val, (BlowDartEffect)effectType, amount); } } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } } [HarmonyPatch] internal static class ShootAwayNetPatch { [HarmonyPatch(typeof(Character), "Start")] [HarmonyPostfix] private static void AttachNet(Character __instance) { try { if (!((Object)(object)__instance == (Object)null) && !((Object)(object)((Component)__instance).gameObject == (Object)null) && (Object)(object)((Component)__instance).gameObject.GetComponent() == (Object)null) { ((Component)__instance).gameObject.AddComponent(); } } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } } [HarmonyPatch] internal static class BingBongGrenadePatch { [HarmonyPatch(typeof(Item), "Start")] [HarmonyPostfix] private static void AllowThrowing(Item __instance) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) try { if (PhotonNetwork.IsMasterClient && Plugin.BingBongGrenadeEnabled && !((Object)(object)__instance == (Object)null) && !((Object)(object)((Component)__instance).gameObject == (Object)null) && (__instance.itemTags & 0x10) != 0 && __instance.UIData != null) { __instance.UIData.canDrop = true; __instance.UIData.canThrow = true; } } catch (Exception ex) { ManualLogSource log = Plugin.Log; if (log != null) { log.LogError((object)ex); } } } } [HarmonyPatch] internal static class ExplodingBingBongPatch { private const float TriggerVelocity = 36f; private static readonly HashSet _exploded = new HashSet(); [HarmonyPatch(typeof(ItemImpactSFX), "OnCollisionEnter")] [HarmonyPrefix] private static void OnItemImpact(ItemImpactSFX __instance, ref Item ___item) { //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) try { if (!PhotonNetwork.IsMasterClient || !Plugin.BingBongGrenadeEnabled || (Object)(object)__instance == (Object)null || (Object)(object)___item == (Object)null || (Object)(object)((Component)___item).gameObject == (Object)null || (Object)(object)___item.holderCharacter != (Object)null || (Object)(object)((MonoBehaviourPun)___item).photonView == (Object)null) { return; } int viewID = ((MonoBehaviourPun)___item).photonView.ViewID; if (!_exploded.Add(viewID)) { return; } if (!IsBingBong(___item) || __instance.vel <= 36f) { _exploded.Remove(viewID); return; } ManualLogSource log = Plugin.Log; if (log != null) { log.LogInfo((object)("[ShootingAway] 宾邦手榴弹爆炸! vel=" + __instance.vel + " 位置 " + ((object)((Component)___item).transform.position/*cast due to .constrained prefix*/).ToString() + " view=" + viewID)); } GameObject val = PhotonNetwork.Instantiate("0_Items/Dynamite", ((Component)___item).transform.position, ((Component)___item).transform.rotation, (byte)0, (object[])null); if ((Object)(object)val != (Object)null && (Object)(object)val.GetComponent() != (Object)null) { val.GetComponent().RPC("RPC_Explode", (RpcTarget)0, Array.Empty()); } PhotonNetwork.Destroy(((Component)___item).gameObject); } catch (Exception ex) { ManualLogSource log2 = Plugin.Log; if (log2 != null) { log2.LogError((object)ex); } } } private static bool IsBingBong(Item item) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 if ((Object)(object)((Component)item).GetComponent() != (Object)null) { return true; } return (item.itemTags & 0x10) > 0; } } [HarmonyPatch] internal static class MushroomSmokeBombPatch { private const int HealingPuffShroomId = 90; private const int ExtraClouds = 2; private const float ExtraRadius = 1.5f; private static bool IsHealingPuffShroom(Item item) { if ((Object)(object)item == (Object)null) { return false; } if (item.itemID == 90) { return true; } string text = ((Object)((Component)item).gameObject).name ?? string.Empty; return text.IndexOf("HealingPuffShroom", StringComparison.Ordinal) >= 0; } [HarmonyPatch(typeof(ShelfShroom), "Break")] [HarmonyPostfix] private unsafe static void OnShelfShroomBreak(ShelfShroom __instance) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_0086: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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) try { if (!PhotonNetwork.IsMasterClient || !Plugin.MushroomSmokeBombEnabled || (Object)(object)__instance == (Object)null || (Object)(object)__instance.instantiateOnBreak == (Object)null) { return; } Item component = ((Component)__instance).GetComponent(); if (IsHealingPuffShroom(component)) { string text = "0_Items/" + ((Object)__instance.instantiateOnBreak).name; Vector3 position = ((Component)__instance).transform.position; for (int i = 0; i < 2; i++) { Vector2 insideUnitCircle = Random.insideUnitCircle; Vector2 val = ((Vector2)(ref insideUnitCircle)).normalized * 1.5f; Vector3 val2 = position + new Vector3(val.x, 0.15f, val.y); Quaternion val3 = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f); PhotonNetwork.Instantiate(text, val2, val3, (byte)0, (object[])null); } ManualLogSource log = Plugin.Log; if (log != null) { log.LogInfo((object)("[ShootingAway] 灵药菇烟雾弹: 额外引爆 " + 2 + " 个 " + text + " @ " + ((object)(*(Vector3*)(&position))/*cast due to .constrained prefix*/).ToString())); } } } catch (Exception ex) { ManualLogSource log2 = Plugin.Log; if (log2 != null) { log2.LogError((object)ex); } } } } public enum BlowDartEffect { Original, Injury, Poison, Cold, Hot, Hunger, Drowsy, Curse } [BepInPlugin("com.peaks.shootingshootingaway", "ShootingshootingAway", "1.0.2")] public class Plugin : BaseUnityPlugin { public static Plugin Instance; internal static ManualLogSource Log; internal static bool EffectEnabled = true; internal static BlowDartEffect EffectType = BlowDartEffect.Curse; internal static float EffectAmount = 15f; internal static bool InfiniteDurability = true; internal static bool AllowSelfHit = false; internal static bool BingBongGrenadeEnabled = true; internal static bool MushroomSmokeBombEnabled = true; internal static bool MenuVisible; private Harmony _harmony; private Rect _menuRect = new Rect(200f, 140f, 380f, 380f); private GUIStyle _bgStyle; private GUIStyle _btnStyle; private GUIStyle _lblStyle; private GUIStyle _toggleStyle; private GUIStyle _titleStyle; private Texture2D _texBg; private Texture2D _texBtn; private Texture2D _texBtnHover; private bool _stylesReady; internal static bool IsHost => PhotonNetwork.IsMasterClient; private void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown Instance = this; Log = ((BaseUnityPlugin)this).Logger; _harmony = new Harmony("com.peaks.shootingshootingaway"); _harmony.PatchAll(); foreach (MethodBase patchedMethod in _harmony.GetPatchedMethods()) { Log.LogInfo((object)("[ShootingAway] patched: " + patchedMethod.DeclaringType?.FullName + "." + patchedMethod.Name)); } Log.LogInfo((object)"[ShootingAway] loaded. F3 toggles menu."); } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { if (IsHost && Input.GetKeyDown((KeyCode)284)) { MenuVisible = !MenuVisible; } } private void LateUpdate() { if (IsHost && MenuVisible) { Cursor.visible = true; Cursor.lockState = (CursorLockMode)0; } } private void OnGUI() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_0058: 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) if (IsHost && MenuVisible) { InitStyles(); _menuRect = GUILayout.Window(123457, _menuRect, new WindowFunction(DrawMenu), "ShootingshootingAway", _bgStyle, (GUILayoutOption[])(object)new GUILayoutOption[2] { GUILayout.Width(380f), GUILayout.Height(380f) }); } } private void InitStyles() { //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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00d9: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: 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_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0120: 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_0135: 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_014d: Expected O, but got Unknown //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Expected O, but got Unknown //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Expected O, but got Unknown //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_01e3: 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_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Expected O, but got Unknown if ((Object)(object)_texBg == (Object)null || (Object)(object)_texBtn == (Object)null) { _stylesReady = false; } if (!_stylesReady) { _stylesReady = true; Color c = H2C("223322"); Color textColor = H2C("CCFFCC"); _texBg = DDSafe(_texBg, c); _texBtn = DDSafe(_texBtn, Color.white); _texBtnHover = DDSafe(_texBtnHover, H2C("88FF88")); GUIStyle val = new GUIStyle(GUI.skin.box); val.normal.background = _texBg; val.normal.textColor = textColor; val.fontSize = 14; val.padding = new RectOffset(12, 12, 10, 10); _bgStyle = val; GUIStyle val2 = new GUIStyle(GUI.skin.button); val2.normal.background = _texBtn; val2.normal.textColor = H2C("223322"); val2.hover.background = _texBtnHover; val2.hover.textColor = H2C("223322"); val2.fontSize = 13; val2.fixedHeight = 26f; _btnStyle = val2; GUIStyle val3 = new GUIStyle(GUI.skin.label); val3.normal.textColor = textColor; val3.fontSize = 13; val3.alignment = (TextAnchor)3; _lblStyle = val3; GUIStyle val4 = new GUIStyle(GUI.skin.button); val4.normal.textColor = textColor; val4.hover.textColor = textColor; val4.fontSize = 13; val4.fixedHeight = 26f; val4.fixedWidth = 64f; _toggleStyle = val4; GUIStyle val5 = new GUIStyle(GUI.skin.label); val5.normal.textColor = H2C("AAFFAA"); val5.fontSize = 16; val5.fontStyle = (FontStyle)1; val5.alignment = (TextAnchor)1; _titleStyle = val5; } } private static Texture2D DDSafe(Texture2D old, Color c) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)old != (Object)null) { Object.Destroy((Object)(object)old); } Texture2D val = new Texture2D(1, 1); val.SetPixel(0, 0, c); val.Apply(); Object.DontDestroyOnLoad((Object)(object)val); return val; } private void DrawMenu(int id) { GUILayout.Space(3f); GUILayout.Label("吹箭效果替换", _titleStyle, Array.Empty()); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("效果替换:", _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(110f) }); bool flag = GUILayout.Toggle(EffectEnabled, EffectEnabled ? " 开" : " 关", _toggleStyle, Array.Empty()); if (flag != EffectEnabled) { EffectEnabled = flag; } GUILayout.EndHorizontal(); GUILayout.Space(6f); GUILayout.Label("效果类型:", _lblStyle, Array.Empty()); GUILayout.BeginHorizontal(Array.Empty()); if (GUILayout.Button("<", _btnStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) })) { SelectPreviousEffect(); } GUILayout.Label(BlowDartService.DisplayName(EffectType), _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandWidth(true) }); if (GUILayout.Button(">", _btnStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) })) { SelectNextEffect(); } GUILayout.EndHorizontal(); GUILayout.Space(6f); GUILayout.Label("强度(百分比): " + Mathf.RoundToInt(EffectAmount), _lblStyle, Array.Empty()); float num = GUILayout.HorizontalSlider(EffectAmount, 0f, 100f, Array.Empty()); if (Mathf.Abs(num - EffectAmount) > 0.1f) { EffectAmount = Mathf.RoundToInt(num); } GUILayout.Label("诅咒默认 15(= 15% 诅咒)", _lblStyle, Array.Empty()); GUILayout.Space(8f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("吹箭无限耐久:", _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(110f) }); bool flag2 = GUILayout.Toggle(InfiniteDurability, InfiniteDurability ? " 开" : " 关", _toggleStyle, Array.Empty()); if (flag2 != InfiniteDurability) { InfiniteDurability = flag2; } GUILayout.EndHorizontal(); GUILayout.Space(8f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("宾邦手榴弹:", _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(110f) }); bool flag3 = GUILayout.Toggle(BingBongGrenadeEnabled, BingBongGrenadeEnabled ? " 开" : " 关", _toggleStyle, Array.Empty()); if (flag3 != BingBongGrenadeEnabled) { BingBongGrenadeEnabled = flag3; } GUILayout.EndHorizontal(); GUILayout.Space(8f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("灵药菇烟雾弹:", _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(110f) }); bool flag4 = GUILayout.Toggle(MushroomSmokeBombEnabled, MushroomSmokeBombEnabled ? " 开" : " 关", _toggleStyle, Array.Empty()); if (flag4 != MushroomSmokeBombEnabled) { MushroomSmokeBombEnabled = flag4; } GUILayout.EndHorizontal(); GUILayout.Space(10f); if (GUILayout.Button("获取吹箭(测试用)", _btnStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(32f) })) { GiveBlowDart(); } if (GUILayout.Button("获取宾邦(测试用)", _btnStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(32f) })) { GiveBingBong(); } GUILayout.Space(8f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.Label("测试:命中自己:", _lblStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(110f) }); bool flag5 = GUILayout.Toggle(AllowSelfHit, AllowSelfHit ? " 开" : " 关", _toggleStyle, Array.Empty()); if (flag5 != AllowSelfHit) { AllowSelfHit = flag5; } GUILayout.EndHorizontal(); GUILayout.Space(10f); GUILayout.BeginHorizontal(Array.Empty()); GUILayout.FlexibleSpace(); if (GUILayout.Button("关闭 (F3)", _btnStyle, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) })) { MenuVisible = false; } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUI.DragWindow(); } private static void SelectNextEffect() { BlowDartEffect[] array = (BlowDartEffect[])Enum.GetValues(typeof(BlowDartEffect)); int num = Array.IndexOf(array, EffectType); EffectType = array[(num + 1) % array.Length]; } private static void SelectPreviousEffect() { BlowDartEffect[] array = (BlowDartEffect[])Enum.GetValues(typeof(BlowDartEffect)); int num = Array.IndexOf(array, EffectType); EffectType = array[(num - 1 + array.Length) % array.Length]; } private static void GiveBlowDart() { Character localCharacter = Character.localCharacter; if ((Object)(object)localCharacter == (Object)null || !localCharacter.IsLocal) { ManualLogSource log = Log; if (log != null) { log.LogWarning((object)"[ShootingAway] 未进入关卡,无法获取吹箭。"); } return; } if ((Object)(object)localCharacter.data == (Object)null || localCharacter.data.dead || localCharacter.IsGhost) { ManualLogSource log2 = Log; if (log2 != null) { log2.LogWarning((object)"[ShootingAway] 当前角色无法持有吹箭。"); } return; } if ((Object)(object)GameUtils.instance == (Object)null) { ManualLogSource log3 = Log; if (log3 != null) { log3.LogWarning((object)"[ShootingAway] GameUtils 未初始化。"); } return; } Item val = FindBlowDartItem(); if ((Object)(object)val == (Object)null) { ManualLogSource log4 = Log; if (log4 != null) { log4.LogWarning((object)"[ShootingAway] 未在游戏资源中找到吹箭物品。"); } return; } try { GameUtils.instance.InstantiateAndGrab(val, localCharacter, 0); ManualLogSource log5 = Log; if (log5 != null) { log5.LogInfo((object)"[ShootingAway] 已获取一支吹箭。"); } } catch (Exception ex) { ManualLogSource log6 = Log; if (log6 != null) { log6.LogError((object)("[ShootingAway] 获取吹箭失败: " + ex)); } } } private static Item FindBlowDartItem() { Item[] array = Resources.FindObjectsOfTypeAll(); Item[] array2 = array; foreach (Item val in array2) { if (!((Object)(object)val == (Object)null) && !((Object)(object)((Component)val).gameObject == (Object)null)) { if ((Object)(object)((Component)val).GetComponent() != (Object)null) { return val; } if ((Object)(object)((Component)val).GetComponentInChildren(true) != (Object)null) { return val; } } } Item[] array3 = array; foreach (Item val2 in array3) { if (!((Object)(object)val2 == (Object)null)) { string v = ((Object)((Component)val2).gameObject).name ?? string.Empty; string v2 = string.Empty; try { v2 = val2.GetName() ?? string.Empty; } catch { } if (ContainsDartName(v) || ContainsDartName(v2)) { return val2; } } } return null; } private static bool ContainsDartName(string v) { if (string.IsNullOrWhiteSpace(v)) { return false; } string text = v.ToLowerInvariant(); if (!text.Contains("blowgun") && !text.Contains("blowdart") && !text.Contains("dart") && !v.Contains("吹箭")) { return v.Contains("针筒"); } return true; } private static void GiveBingBong() { Character localCharacter = Character.localCharacter; if ((Object)(object)localCharacter == (Object)null || !localCharacter.IsLocal) { ManualLogSource log = Log; if (log != null) { log.LogWarning((object)"[ShootingAway] 未进入关卡,无法获取宾邦。"); } return; } if ((Object)(object)localCharacter.data == (Object)null || localCharacter.data.dead || localCharacter.IsGhost) { ManualLogSource log2 = Log; if (log2 != null) { log2.LogWarning((object)"[ShootingAway] 当前角色无法持有宾邦。"); } return; } if ((Object)(object)GameUtils.instance == (Object)null) { ManualLogSource log3 = Log; if (log3 != null) { log3.LogWarning((object)"[ShootingAway] GameUtils 未初始化。"); } return; } Item val = FindBingBongItem(); if ((Object)(object)val == (Object)null) { ManualLogSource log4 = Log; if (log4 != null) { log4.LogWarning((object)"[ShootingAway] 未在游戏资源中找到宾邦物品。"); } return; } try { GameUtils.instance.InstantiateAndGrab(val, localCharacter, 0); ManualLogSource log5 = Log; if (log5 != null) { log5.LogInfo((object)"[ShootingAway] 已获取一个宾邦。"); } } catch (Exception ex) { ManualLogSource log6 = Log; if (log6 != null) { log6.LogError((object)("[ShootingAway] 获取宾邦失败: " + ex)); } } } private static Item FindBingBongItem() { //IL_0028: 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) Item[] array = Resources.FindObjectsOfTypeAll(); Item[] array2 = array; foreach (Item val in array2) { if (!((Object)(object)val == (Object)null) && !((Object)(object)((Component)val).gameObject == (Object)null) && (val.itemTags & 0x10) != 0) { return val; } } return null; } private static Color H2C(string h) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (h[0] == '#') { h = h.Substring(1); } return new Color((float)Convert.ToInt32(h.Substring(0, 2), 16) / 255f, (float)Convert.ToInt32(h.Substring(2, 2), 16) / 255f, (float)Convert.ToInt32(h.Substring(4, 2), 16) / 255f, 1f); } } internal static class BlowDartService { internal static bool IsVanilla(BlowDartEffect e) { if (e != BlowDartEffect.Original) { return e == BlowDartEffect.Drowsy; } return true; } internal static bool IsBlowDart(Item item) { if ((Object)(object)item == (Object)null) { return false; } if ((Object)(object)((Component)item).GetComponent() != (Object)null) { return true; } return (Object)(object)((Component)item).GetComponentInChildren(true) != (Object)null; } internal static STATUSTYPE? ResolveStatusType(BlowDartEffect effect) { return effect switch { BlowDartEffect.Injury => (STATUSTYPE)0, BlowDartEffect.Hunger => (STATUSTYPE)1, BlowDartEffect.Cold => (STATUSTYPE)2, BlowDartEffect.Poison => (STATUSTYPE)3, BlowDartEffect.Curse => (STATUSTYPE)5, BlowDartEffect.Drowsy => (STATUSTYPE)6, BlowDartEffect.Hot => (STATUSTYPE)8, _ => null, }; } internal static string DisplayName(BlowDartEffect e) { return e switch { BlowDartEffect.Original => "原版睡眠", BlowDartEffect.Injury => "受伤", BlowDartEffect.Poison => "中毒", BlowDartEffect.Cold => "寒冷", BlowDartEffect.Hot => "炎热", BlowDartEffect.Hunger => "饥饿", BlowDartEffect.Drowsy => "困倦", BlowDartEffect.Curse => "诅咒", _ => e.ToString(), }; } } } namespace System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class ConstantExpectedAttribute : Attribute { public object? Min { get; set; } public object? Max { get; set; } } [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class ExperimentalAttribute : Attribute { public string DiagnosticId { get; } public string? UrlFormat { get; set; } public ExperimentalAttribute(string diagnosticId) { DiagnosticId = diagnosticId; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] internal sealed class MemberNotNullAttribute : Attribute { public string[] Members { get; } public MemberNotNullAttribute(string member) { Members = new string[1] { member }; } public MemberNotNullAttribute(params string[] members) { Members = members; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] internal sealed class MemberNotNullWhenAttribute : Attribute { public bool ReturnValue { get; } public string[] Members { get; } public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; Members = new string[1] { member }; } public MemberNotNullWhenAttribute(bool returnValue, params string[] members) { ReturnValue = returnValue; Members = members; } } [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class SetsRequiredMembersAttribute : Attribute { } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class StringSyntaxAttribute : Attribute { public const string CompositeFormat = "CompositeFormat"; public const string DateOnlyFormat = "DateOnlyFormat"; public const string DateTimeFormat = "DateTimeFormat"; public const string EnumFormat = "EnumFormat"; public const string GuidFormat = "GuidFormat"; public const string Json = "Json"; public const string NumericFormat = "NumericFormat"; public const string Regex = "Regex"; public const string TimeOnlyFormat = "TimeOnlyFormat"; public const string TimeSpanFormat = "TimeSpanFormat"; public const string Uri = "Uri"; public const string Xml = "Xml"; public string Syntax { get; } public object?[] Arguments { get; } public StringSyntaxAttribute(string syntax) { Syntax = syntax; Arguments = new object[0]; } public StringSyntaxAttribute(string syntax, params object?[] arguments) { Syntax = syntax; Arguments = arguments; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class UnscopedRefAttribute : Attribute { } } namespace System.Runtime.Versioning { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class RequiresPreviewFeaturesAttribute : Attribute { public string? Message { get; } public string? Url { get; set; } public RequiresPreviewFeaturesAttribute() { } public RequiresPreviewFeaturesAttribute(string? message) { Message = message; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CallerArgumentExpressionAttribute : Attribute { public string ParameterName { get; } public CallerArgumentExpressionAttribute(string parameterName) { ParameterName = parameterName; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CollectionBuilderAttribute : Attribute { public Type BuilderType { get; } public string MethodName { get; } public CollectionBuilderAttribute(Type builderType, string methodName) { BuilderType = builderType; MethodName = methodName; } } [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CompilerFeatureRequiredAttribute : Attribute { public const string RefStructs = "RefStructs"; public const string RequiredMembers = "RequiredMembers"; public string FeatureName { get; } public bool IsOptional { get; set; } public CompilerFeatureRequiredAttribute(string featureName) { FeatureName = featureName; } } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class InterpolatedStringHandlerArgumentAttribute : Attribute { public string[] Arguments { get; } public InterpolatedStringHandlerArgumentAttribute(string argument) { Arguments = new string[1] { argument }; } public InterpolatedStringHandlerArgumentAttribute(params string[] arguments) { Arguments = arguments; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class InterpolatedStringHandlerAttribute : Attribute { } [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] internal static class IsExternalInit { } [AttributeUsage(AttributeTargets.Method, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class ModuleInitializerAttribute : Attribute { } [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class OverloadResolutionPriorityAttribute : Attribute { public int Priority { get; } public OverloadResolutionPriorityAttribute(int priority) { Priority = priority; } } [AttributeUsage(AttributeTargets.Parameter, Inherited = true, AllowMultiple = false)] [ExcludeFromCodeCoverage] internal sealed class ParamCollectionAttribute : Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class RequiredMemberAttribute : Attribute { } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] internal sealed class RequiresLocationAttribute : Attribute { } [AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class SkipLocalsInitAttribute : Attribute { } }