The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of PeakCringe v0.2.0
plugins/com.github.baphometcrafts.PeakCringe.dll
Decompiled a week agousing System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using PEAKLib.Core; using PEAKLib.Items; using PeakCringe; using Photon.Pun; using Photon.Realtime; 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("com.github.baphometcrafts.PeakCringe")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.2.0.0")] [assembly: AssemblyInformationalVersion("0.2.0")] [assembly: AssemblyProduct("com.github.baphometcrafts.PeakCringe")] [assembly: AssemblyTitle("PeakCringe")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.2.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] 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; } } } public class Action_Dodo : ItemAction { private DodoManager dodoManager; public override void RunAction() { if (Object.op_Implicit((Object)(object)((ItemActionBase)this).character)) { Plugin.Log.LogInfo((object)"attempting to tie a new dodo"); dodoManager = ((Component)((ItemActionBase)this).character).GetComponent<DodoManager>(); dodoManager.TieNewDodo(); } } } public class TiedDodo : MonoBehaviourPunCallbacks { [CompilerGenerated] private sealed class <InitRoutine>d__22 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public int characterID; public TiedDodo <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <InitRoutine>d__22(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; TiedDodo tiedDodo = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if (!Object.op_Implicit((Object)(object)Character.localCharacter)) { <>2__current = null; <>1__state = 1; return true; } PhotonView val = PhotonView.Find(characterID); if ((Object)(object)val == (Object)null) { Plugin.Log.LogError((object)"Tried to assign dodo to nonexistent photon ID."); return false; } DodoManager component = ((Component)val).GetComponent<DodoManager>(); Plugin.Log.LogInfo((object)$"Init Dodo for view {characterID}"); tiedDodo.dodoManager = component; component.tiedDodos.Add(tiedDodo); 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 LineRenderer lr; public Transform anchor; public Transform start; public Transform end; public Rigidbody rb; public Transform dodo; private DodoManager dodoManager; public float floatForce = 10f; private Vector3[] positions = (Vector3[])(object)new Vector3[2]; public float rotationSpeed = 1f; public float heightOffest = 0.35f; public float probablyStuckDistance = 15f; public float unstickTime = 5f; private float stuckTimer; public float healingPerInterval = 0.025f; public float healingInterval = 60f; private float healingTimer; public SFX_Instance healingSound; public SFX_Instance[] barkSounds; public void Init(DodoManager dodoManager) { ((MonoBehaviourPun)this).photonView.RPC("RPC_Init", (RpcTarget)0, new object[1] { ((MonoBehaviourPun)dodoManager).photonView.ViewID }); } public override void OnPlayerEnteredRoom(Player newPlayer) { if (((MonoBehaviourPun)this).photonView.IsMine) { ((MonoBehaviourPun)this).photonView.RPC("RPC_Init", newPlayer, new object[1] { ((MonoBehaviourPun)dodoManager).photonView.ViewID }); } } [PunRPC] public void RPC_Init(int characterID) { ((MonoBehaviour)this).StartCoroutine(InitRoutine(characterID)); } [IteratorStateMachine(typeof(<InitRoutine>d__22))] private IEnumerator InitRoutine(int characterID) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <InitRoutine>d__22(0) { <>4__this = this, characterID = characterID }; } private void LateUpdate() { UpdateRotation(); } private void FixedUpdate() { UpdateRotation(); UnstickIfStuck(); Heal(); JumpIfPlayerJumping(); } private void UpdateLineRenderer() { //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_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) positions[0] = start.position; positions[1] = end.position; lr.SetPositions(positions); } private void UpdateRotation() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //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_0060: 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) //IL_0066: 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) Vector3 val = dodoManager.character.Center + Vector3.down * 0.35f - dodo.position; float num = rotationSpeed * Time.deltaTime; Vector3 val2 = Vector3.RotateTowards(dodo.forward, val, num, 0f); Debug.DrawRay(dodo.position, val2, Color.red); dodo.rotation = Quaternion.LookRotation(val2); } private void UnstickIfStuck() { //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_0077: 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_0081: Unknown result type (might be due to invalid IL or missing references) float num = Vector3.Distance(dodo.position, dodoManager.character.Center); if (num > probablyStuckDistance) { stuckTimer += Time.deltaTime; } else { stuckTimer = 0f; } if (stuckTimer > unstickTime) { Plugin.Log.LogInfo((object)"Unsticking Dodo"); dodo.position = dodoManager.character.Center - Vector3.forward; } } private void Heal() { //IL_0158: Unknown result type (might be due to invalid IL or missing references) if (!dodoManager.character.IsLocal) { return; } healingTimer += Time.deltaTime; if (healingTimer > healingInterval) { healingTimer = 0f; Plugin.Log.LogInfo((object)("Current injury: " + dodoManager.character.refs.afflictions.currentStatuses[0])); Plugin.Log.LogInfo((object)("Current: " + dodoManager.character.refs.afflictions.currentStatuses)); if ((double)dodoManager.character.refs.afflictions.currentStatuses[0] > 0.001) { Plugin.Log.LogInfo((object)$"Dodo {this} healing {dodoManager.character} for {healingPerInterval} points"); dodoManager.character.refs.afflictions.SubtractStatus((STATUSTYPE)0, Mathf.Abs(healingPerInterval), false); int num = Random.RandomRangeInt(0, barkSounds.Count()); barkSounds[num].Play(dodoManager.character.Head); } } } private void JumpIfPlayerJumping() { //IL_001d: 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) if (dodoManager.character.data.isJumping) { rb.AddForce(Vector3.up * floatForce, (ForceMode)5); } } } namespace MonoDetour.HookGen { internal static class DefaultMonoDetourManager { internal static MonoDetourManager Instance { get; } = New(); internal static MonoDetourManager New() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown return new MonoDetourManager(typeof(DefaultMonoDetourManager).Assembly.GetName().Name); } } [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class, AllowMultiple = true, Inherited = false)] internal class MonoDetourTargetsAttribute : Attribute, IMonoDetourTargets { public Type? TargetType { get; } public bool IncludeNestedTypes { get; set; } public bool DistinguishOverloadsByName { get; set; } public string[]? Members { get; set; } public string[]? MemberNamePrefixes { get; set; } public string[]? MemberNameSuffixes { get; set; } public bool GenerateControlFlowVariants { get; set; } public MonoDetourTargetsAttribute(Type? targetType = null) { TargetType = targetType; IncludeNestedTypes = true; base..ctor(); } } } namespace BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace PeakCringe { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.github.baphometcrafts.PeakCringe", "PeakCringe", "0.2.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Log; internal static AssetBundle assets; internal static AssetBundle itemAssets; internal static SFX_Instance fartWithReverbSFX = (SFX_Instance)ScriptableObject.CreateInstance("SFX_Instance"); internal static SFX_Instance tomScreamSFX = (SFX_Instance)ScriptableObject.CreateInstance("SFX_Instance"); public const string Id = "com.github.baphometcrafts.PeakCringe"; internal static ModDefinition Definition { get; set; } public static string Name => "PeakCringe"; public static string Version => "0.2.0"; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)("Plugin " + Name + " is loaded!")); LoadAudioClips(); LoadItems(); Harmony.CreateAndPatchAll(typeof(Patcher), (string)null); } private void LoadItems() { LoadBlueDinosaurCrunch(); LoadDodo(); } private void LoadBlueDinosaurCrunch() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "bluedinocrunch"); itemAssets = AssetBundle.LoadFromFile(text); Item component = itemAssets.LoadAsset<GameObject>("blue dinosaur crunch.prefab").GetComponent<Item>(); Definition = ModDefinition.GetOrCreate(((BaseUnityPlugin)this).Info.Metadata); new ItemContent(component).Register(Definition); string[] source = new string[13] { "BLUE DINOSAUR CRUNCH", null, null, null, null, null, null, null, null, null, null, null, null }; LocalizedText.mainTable.Add("NAME_BLUE DINOSAUR CRUNCH", source.ToList()); } private void LoadDodo() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) Item component = itemAssets.LoadAsset<GameObject>("dodo.prefab").GetComponent<Item>(); Definition = ModDefinition.GetOrCreate(((BaseUnityPlugin)this).Info.Metadata); new ItemContent(component).Register(Definition); TiedDodo component2 = itemAssets.LoadAsset<GameObject>("tieddodo.prefab").GetComponent<TiedDodo>(); NetworkPrefabManager.RegisterNetworkPrefab(Definition, "0_Items/", ((Component)component2).gameObject); Renderer[] componentsInChildren = ((Component)component2).GetComponentsInChildren<Renderer>(); Renderer[] array = componentsInChildren; foreach (Renderer val in array) { Material[] materials = val.materials; Material[] array2 = materials; foreach (Material val2 in array2) { Shader shader = Shader.Find("W/Peak_Standard"); val2.shader = shader; } } string[] array3 = new string[13] { "DODO", null, null, null, null, null, null, null, null, null, null, null, null }; LocalizedText.mainTable.Add("NAME_DODO", array3.ToList()); string[] array4 = new string[13]; array3[0] = "unleash"; LocalizedText.mainTable.Add("UNLEASH", array3.ToList()); } private void LoadAudioClips() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); assets = AssetBundle.LoadFromFile(Path.Combine(directoryName, "peakcringeassets")); if ((Object)(object)assets == (Object)null) { Log.LogError((object)"Failed to load custom assets."); return; } assets.LoadAllAssets(); LoadClip(fartWithReverbSFX, "assets/sounds/fart-with-reverb.mp3", 2000); LoadClip(tomScreamSFX, "assets/sounds/Tom_Scream_Ow.mp3", 2000); } private void LoadClip(SFX_Instance reference, string path, int range) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown AudioClip val = assets.LoadAsset<AudioClip>(path); reference.settings = new SFX_Settings(); reference.settings.range = range; reference.settings.volume = 1f; reference.settings.pitch_Variation = 0.5f; reference.settings.spatialBlend = 0.5f; AudioClip[] clips = (AudioClip[])(object)new AudioClip[1] { val }; reference.clips = clips; } } public static class Patcher { [HarmonyPostfix] [HarmonyPatch(typeof(Character), "Awake")] public static void AwakePatch(Character __instance) { ((Component)__instance).gameObject.AddComponent<SlipManager>(); ((Component)__instance).gameObject.AddComponent<DodoManager>(); Plugin.Log.LogInfo((object)("Added Component to character: " + __instance.characterName)); } } public class DodoManager : MonoBehaviourPunCallbacks { internal Character character; internal List<TiedDodo> tiedDodos = new List<TiedDodo>(); internal static ManualLogSource Log { get; private set; } private void Awake() { Character component = ((Component)this).GetComponent<Character>(); character = component; } private void FixedUpdate() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) if (character.data.dead) { for (int i = 0; i < tiedDodos.Count; i++) { Object.Destroy((Object)(object)tiedDodos[i]); } tiedDodos.Clear(); } else { for (int j = 0; j < tiedDodos.Count; j++) { tiedDodos[j].anchor.position = character.Center; } } } public void TieNewDodo() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) PhotonNetwork.Instantiate("0_Items/com.github.baphometcrafts.PeakCringe:TiedDodo", character.Center, Quaternion.identity, (byte)0, (object[])null).GetComponent<TiedDodo>().Init(this); } } public class SlipManager : MonoBehaviour { private Random random = new Random(); private Character localCharacter; private DateTime nextSlip; private int minSeconds = 300; private int maxSeconds = 600; private int slideCooldown = 10; private DateTime lastSlideTime; private int slideTimeBeforeScream = 1; private DateTime timeStartedSliding; private bool isSliding; internal static ManualLogSource Log { get; private set; } private void Awake() { Character component = ((Component)this).GetComponent<Character>(); if (component.IsLocal) { localCharacter = component; nextSlip = RandomFutureTime.GetFutureTime(random, 600, 900); Plugin.Log.LogInfo((object)$"nextSlip {nextSlip}"); Plugin.Log.LogInfo((object)$"Creating SlipManager: {RuntimeHelpers.GetHashCode(this)}"); } } private void Update() { SlideAndScream(); if ((Object)(object)localCharacter != (Object)null && DateTime.Compare(DateTime.Now, nextSlip) > 0) { PhotonView component = ((Component)this).GetComponent<PhotonView>(); if (!((Object)(object)component == (Object)null)) { nextSlip = RandomFutureTime.GetFutureTime(random, minSeconds, maxSeconds); component.RPC("RPCA_Slip", (RpcTarget)0, new object[1] { localCharacter.refs.view.ViewID }); Plugin.Log.LogInfo((object)$"nextSlip {nextSlip}"); } } } private void SlideAndScream() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) Character component = ((Component)this).GetComponent<Character>(); if (component.IsSliding()) { if (!isSliding) { timeStartedSliding = DateTime.Now; } isSliding = true; if (DateTime.Compare(lastSlideTime.AddSeconds(slideCooldown), DateTime.Now) <= 0 && DateTime.Compare(timeStartedSliding.AddSeconds(slideTimeBeforeScream), DateTime.Now) < 0) { Plugin.Log.LogInfo((object)(component.characterName + " is screaming!!!")); Plugin.tomScreamSFX.Play(component.Center); lastSlideTime = DateTime.Now; } } else { isSliding = false; } } [PunRPC] public void RPCA_Slip(int viewID) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) //IL_0092: 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_00a6: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: 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) Character component = ((Component)PhotonView.Find(viewID)).GetComponent<Character>(); if (!((Object)component == (Object)null)) { Plugin.Log.LogInfo((object)(component.characterName + " slipped!")); Rigidbody bodypartRig = component.GetBodypartRig((BodypartType)16); Rigidbody bodypartRig2 = component.GetBodypartRig((BodypartType)13); Rigidbody bodypartRig3 = component.GetBodypartRig((BodypartType)0); Rigidbody bodypartRig4 = component.GetBodypartRig((BodypartType)4); component.RPCA_Fall(2f); bodypartRig.AddForce((component.data.lookDirection_Flat + Vector3.up) * 200f, (ForceMode)1); bodypartRig2.AddForce((component.data.lookDirection_Flat + Vector3.up) * 200f, (ForceMode)1); bodypartRig3.AddForce(Vector3.up * 1500f, (ForceMode)1); bodypartRig4.AddForce(component.data.lookDirection_Flat * -300f, (ForceMode)1); SFX_Player.instance.PlaySFX(Plugin.fartWithReverbSFX, component.Center, (Transform)null, (SFX_Settings)null, 3f, false); } } } public static class RandomFutureTime { public static DateTime GetFutureTime(Random randomInstance, int minSeconds, int maxSeconds) { DateTime dateTime = DateTime.Now.AddSeconds(minSeconds); DateTime dateTime2 = DateTime.Now.AddSeconds(maxSeconds); long ticks = (dateTime2 - dateTime).Ticks; long value = (long)(randomInstance.NextDouble() * (double)ticks); return dateTime.AddTicks(value); } } public static class PluginInfo { public const string PLUGIN_GUID = "com.github.baphometcrafts.PeakCringe"; public const string PLUGIN_NAME = "com.github.baphometcrafts.PeakCringe"; public const string PLUGIN_VERSION = "0.2.0"; } } 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 { } }