Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of BongoMod v1.0.0
BepInEx/plugins/BongoMod/me.loaforc.bongomod.dll
Decompiled 6 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using BongoMod.Patches; using BongoMod.Revive; using BongoMod.SoundAPI; using Dawn; using Dawn.Utils; using GameNetcodeStuff; using LethalNetworkAPI; using Microsoft.CodeAnalysis; using On; using On.GameNetcodeStuff; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.SceneManagement; using loaforcsSoundAPI; using loaforcsSoundAPI.Core; using loaforcsSoundAPI.SoundPacks; using loaforcsSoundAPI.SoundPacks.Data; using loaforcsSoundAPI.SoundPacks.Data.Conditions; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("me.loaforc.soundapi")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.AccessibilityModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.AIModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.AndroidJNIModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.AnimationModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.AssetBundleModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.AudioModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ClothModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ClusterInputModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ClusterRendererModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ContentLoadModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.CoreModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.CrashReportingModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.DirectorModule")] [assembly: IgnoresAccessChecksTo("UnityEngine")] [assembly: IgnoresAccessChecksTo("UnityEngine.DSPGraphModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.GameCenterModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.GIModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.GridModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.HotReloadModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ImageConversionModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.IMGUIModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.InputLegacyModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.InputModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.JSONSerializeModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.LocalizationModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ParticleSystemModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.PerformanceReportingModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.Physics2DModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.PhysicsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ProfilerModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.PropertiesModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.ScreenCaptureModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SharedInternalsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpriteMaskModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpriteShapeModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.StreamingModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SubstanceModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SubsystemsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TerrainModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TerrainPhysicsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TextCoreFontEngineModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TextCoreTextEngineModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TextRenderingModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TilemapModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.TLSModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("UnityEngine.UIElementsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UIModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UmbraModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityAnalyticsCommonModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityAnalyticsModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityConnectModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityCurlModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityTestProtocolModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityWebRequestAssetBundleModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityWebRequestAudioModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityWebRequestModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityWebRequestTextureModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UnityWebRequestWWWModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.VehiclesModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.VFXModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.VideoModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.VirtualTexturingModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.VRModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.WindModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.XRModule")] [assembly: AssemblyCompany("me.loaforc.bongomod")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BongoMod")] [assembly: AssemblyTitle("me.loaforc.bongomod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BongoMod { [BepInPlugin("me.loaforc.bongomod", "BongoMod", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class BongoMod : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Start <>9__7_1; internal void <Awake>b__7_1(orig_Start orig, GameNetworkManager self) { NetworkManager.Singleton.AddNetworkPrefab(NetworkerPrefab); orig.Invoke(self); } } internal static GameObject NetworkerPrefab; internal static IReviveMechanic ReviveMechanic; internal static LNetworkMessage<int> PlayerRevive; internal static ManualLogSource Logger { get; private set; } private void Awake() { //IL_0090: 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_00a2: Expected O, but got Unknown //IL_010b: 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) //IL_0116: Expected O, but got Unknown Logger = Logger.CreateLogSource("me.loaforc.bongomod"); BongoModConfig.Init(((BaseUnityPlugin)this).Config); BongoModSoundAPI.Init(((BaseUnityPlugin)this).Config); HUDManagerPatches.Init(); StartOfRoundPatches.Init(); TimeOfDayPatches.Init(); RoundManagerPatches.Init(); PlayerControllerPatches.Init(); HangarShipDoorPatches.Init(); DeadBodyInfoPatches.Init(); VehicleControllerPatches.Init(); PlayerRevive = LNetworkMessage<int>.Connect("BongoMod.PlayerRevive", (Action<int, ulong>)null, (Action<int>)null, (Action<int, ulong>)null); PlayerRevive.OnServerReceived += delegate(int player, ulong _) { PlayerControllerB val3 = StartOfRound.Instance.allPlayerScripts[player]; Logger.LogInfo((object)("playerrevive.onServerRecieved = " + val3.playerUsername)); PlayerReviveOnOnClientReceived(player); PlayerRevive.SendClients(player); }; PlayerRevive.OnClientReceived += PlayerReviveOnOnClientReceived; NetworkerPrefab = new GameObject("BongoNetworker") { hideFlags = (HideFlags)61 }; NetworkerPrefab.AddComponent<BongoModManager>(); NetworkObject val = NetworkerPrefab.AddComponent<NetworkObject>(); val.GlobalObjectIdHash = BitConverter.ToUInt32(Encoding.UTF8.GetBytes(((Object)NetworkerPrefab).name), 0); Logger.LogDebug((object)$"NetworkerHash: {val.GlobalObjectIdHash}"); object obj = <>c.<>9__7_1; if (obj == null) { hook_Start val2 = delegate(orig_Start orig, GameNetworkManager self) { NetworkManager.Singleton.AddNetworkPrefab(NetworkerPrefab); orig.Invoke(self); }; <>c.<>9__7_1 = val2; obj = (object)val2; } GameNetworkManager.Start += (hook_Start)obj; Logger.LogInfo((object)"me.loaforc.bongomod v1.0.0 has loaded!"); } private void PlayerReviveOnOnClientReceived(int id) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[id]; if (!val.isPlayerDead) { Logger.LogWarning((object)("Tried to revive: " + val.playerUsername + " but they are still alive!")); return; } StartOfRound instance = StartOfRound.Instance; instance.livingPlayers++; int num = Array.IndexOf(StartOfRound.Instance.allPlayerScripts, val); val.ResetPlayerBloodObjects(val.isPlayerDead); if (!val.isPlayerDead && !val.isPlayerControlled) { return; } val.isClimbingLadder = false; if (!val.inSpecialInteractAnimation || (Object)(object)val.currentTriggerInAnimationWith == (Object)null || !Object.op_Implicit((Object)(object)((Component)val.currentTriggerInAnimationWith).GetComponentInChildren<MoveToExitSpecialAnimation>())) { val.clampLooking = false; ((Component)val.gameplayCamera).transform.localEulerAngles = new Vector3(((Component)val.gameplayCamera).transform.localEulerAngles.x, 0f, ((Component)val.gameplayCamera).transform.localEulerAngles.z); val.inVehicleAnimation = false; } val.disableMoveInput = false; val.ResetZAndXRotation(); ((Collider)val.thisController).enabled = true; val.health = 100; val.hasBeenCriticallyInjured = false; val.disableLookInput = false; val.disableInteract = false; ((Behaviour)val.nightVisionRadar).enabled = false; if (val.isPlayerDead) { val.isPlayerDead = false; val.isPlayerControlled = true; val.isInElevator = true; val.isInHangarShipRoom = true; val.isInsideFactory = false; val.parentedToElevatorLastFrame = false; val.overrideGameOverSpectatePivot = null; StartOfRound.Instance.SetPlayerObjectExtrapolate(false); val.TeleportPlayer(StartOfRound.Instance.GetPlayerSpawnPosition(0, false), false, 0f, false, true); val.setPositionOfDeadPlayer = false; val.DisablePlayerModel(StartOfRound.Instance.allPlayerObjects[num], true, true); ((Behaviour)val.helmetLight).enabled = false; val.Crouch(false); val.criticallyInjured = false; if ((Object)(object)val.playerBodyAnimator != (Object)null) { val.playerBodyAnimator.SetBool("Limp", false); } val.bleedingHeavily = false; val.activatingItem = false; val.twoHanded = false; val.inShockingMinigame = false; val.inSpecialInteractAnimation = false; val.freeRotationInInteractAnimation = false; val.disableSyncInAnimation = false; val.inAnimationWithEnemy = null; val.holdingWalkieTalkie = false; val.speakingToWalkieTalkie = false; val.isSinking = false; val.isUnderwater = false; val.sinkingValue = 0f; val.statusEffectAudio.Stop(); val.DisableJetpackControlsLocally(); val.health = 100; val.mapRadarDotAnimator.SetBool("dead", false); val.externalForceAutoFade = Vector3.zero; if (((NetworkBehaviour)val).IsOwner) { HUDManager.Instance.gasHelmetAnimator.SetBool("gasEmitting", false); val.hasBegunSpectating = false; HUDManager.Instance.RemoveSpectateUI(); HUDManager.Instance.gameOverAnimator.SetTrigger("revive"); val.hinderedMultiplier = 1f; val.isMovementHindered = 0; val.sourcesCausingSinking = 0; val.reverbPreset = StartOfRound.Instance.shipReverb; } } SoundManager.Instance.earsRingingTimer = 0f; val.voiceMuffledByEnemy = false; SoundManager.Instance.playerVoicePitchTargets[num] = 1f; SoundManager.Instance.SetPlayerPitch(1f, num); if ((Object)(object)val.currentVoiceChatIngameSettings == (Object)null) { StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } if ((Object)(object)val.currentVoiceChatIngameSettings != (Object)null) { if ((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null) { val.currentVoiceChatIngameSettings.InitializeComponents(); } if (!((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null)) { ((Component)val.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>().overridingLowPass = false; } } } } internal static class BongoModConfig { public enum ReviveMode { None, IndividualTimed, WaveTimed } [Flags] public enum ReviveHintMode { SpotBody = 2, CollectBody = 4 } [CompilerGenerated] private sealed class <GetStartingUnlockables>d__32 : IEnumerable<DawnUnlockableItemInfo>, IEnumerable, IEnumerator<DawnUnlockableItemInfo>, IEnumerator, IDisposable { private int <>1__state; private DawnUnlockableItemInfo <>2__current; private int <>l__initialThreadId; private IEnumerator<DawnUnlockableItemInfo> <>7__wrap1; DawnUnlockableItemInfo IEnumerator<DawnUnlockableItemInfo>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GetStartingUnlockables>d__32(int <>1__state) { this.<>1__state = <>1__state; <>l__initialThreadId = Environment.CurrentManagedThreadId; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <>7__wrap1 = null; <>1__state = -2; } private bool MoveNext() { try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>7__wrap1 = ((Registry<DawnUnlockableItemInfo>)(object)LethalContent.Unlockables).Values.GetEnumerator(); <>1__state = -3; break; case 1: <>1__state = -3; break; } while (<>7__wrap1.MoveNext()) { DawnUnlockableItemInfo current = <>7__wrap1.Current; if (_file.Bind<bool>("Start Unlockables", ((object)((DawnBaseInfo<DawnUnlockableItemInfo>)(object)current).Key).ToString(), false, "Start with this unlockable? Note that not all will be supported here probably").Value) { <>2__current = current; <>1__state = 1; return true; } } <>m__Finally1(); <>7__wrap1 = null; return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<>7__wrap1 != null) { <>7__wrap1.Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } [DebuggerHidden] IEnumerator<DawnUnlockableItemInfo> IEnumerable<DawnUnlockableItemInfo>.GetEnumerator() { if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId) { <>1__state = 0; return this; } return new <GetStartingUnlockables>d__32(0); } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable<DawnUnlockableItemInfo>)this).GetEnumerator(); } } private static ConfigFile _file; public static ReviveMode ReviveMechanic { get; private set; } public static float IndividualTimer { get; private set; } public static float WaveTimer { get; private set; } public static float ReviveScrapPercentage { get; private set; } public static ReviveHintMode ReviveScrapHint { get; private set; } public static int MaximumRevives { get; private set; } public static bool BodyReviveRequirement { get; private set; } internal static void Init(ConfigFile file) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown _file = file; ReviveMechanic = file.Bind<ReviveMode>("Revive Mechanics", "Revive Mechanic", ReviveMode.None, "Implement a revive mechanic? Setting to something other than None will disable voting the ship to leave.").Value; MaximumRevives = file.Bind<int>("Revive Mechanics", "Maximum Revives", 0, new ConfigDescription("Maximum amount of times a player can revive in a single round. Setting to 0 will allow infinite revives.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 10), Array.Empty<object>())).Value; IndividualTimer = file.Bind<int>("Revive Mechanics", "Individual Timer", 40, "(IndividualTimed) How long a revive will take").Value; WaveTimer = file.Bind<int>("Revive Mechanics", "Wave Timer", 90, "(WaveTimed) How long a revive will take. The timer starts when the first person in a wave dies.").Value; } [IteratorStateMachine(typeof(<GetStartingUnlockables>d__32))] internal static IEnumerable<DawnUnlockableItemInfo> GetStartingUnlockables() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GetStartingUnlockables>d__32(-2); } } public class BongoModManager : NetworkSingleton<BongoModManager> { public override void OnNetworkSpawn() { base.OnNetworkSpawn(); BongoMod.ReviveMechanic = BongoModConfig.ReviveMechanic switch { BongoModConfig.ReviveMode.None => new NoOpReviveMechanic(), BongoModConfig.ReviveMode.IndividualTimed => new IndividualTimedRevive(BongoModConfig.IndividualTimer), BongoModConfig.ReviveMode.WaveTimed => ((Component)this).GetComponent<WaveTimedRevive>(), _ => throw new ArgumentOutOfRangeException(), }; } [ServerRpc(RequireOwnership = false)] public void RevivePlayerServerRPC(PlayerControllerReference reference) { RevivePlayerClientRPC(reference); } [ClientRpc] private void RevivePlayerClientRPC(PlayerControllerReference reference) { //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB val = PlayerControllerReference.op_Implicit(reference); if (!val.isPlayerDead) { BongoMod.Logger.LogWarning((object)("Tried to revive: " + val.playerUsername + " but they are still alive!")); return; } StartOfRound instance = StartOfRound.Instance; instance.livingPlayers++; int num = Array.IndexOf(StartOfRound.Instance.allPlayerScripts, val); val.ResetPlayerBloodObjects(val.isPlayerDead); if (!val.isPlayerDead && !val.isPlayerControlled) { return; } val.isClimbingLadder = false; if (!val.inSpecialInteractAnimation || (Object)(object)val.currentTriggerInAnimationWith == (Object)null || !Object.op_Implicit((Object)(object)((Component)val.currentTriggerInAnimationWith).GetComponentInChildren<MoveToExitSpecialAnimation>())) { val.clampLooking = false; ((Component)val.gameplayCamera).transform.localEulerAngles = new Vector3(((Component)val.gameplayCamera).transform.localEulerAngles.x, 0f, ((Component)val.gameplayCamera).transform.localEulerAngles.z); val.inVehicleAnimation = false; } val.disableMoveInput = false; val.ResetZAndXRotation(); ((Collider)val.thisController).enabled = true; val.health = 100; val.hasBeenCriticallyInjured = false; val.disableLookInput = false; val.disableInteract = false; ((Behaviour)val.nightVisionRadar).enabled = false; if (val.isPlayerDead) { val.isPlayerDead = false; val.isPlayerControlled = true; val.isInElevator = true; val.isInHangarShipRoom = true; val.isInsideFactory = false; val.parentedToElevatorLastFrame = false; val.overrideGameOverSpectatePivot = null; StartOfRound.Instance.SetPlayerObjectExtrapolate(false); val.TeleportPlayer(StartOfRound.Instance.GetPlayerSpawnPosition(0, false), false, 0f, false, true); val.setPositionOfDeadPlayer = false; val.DisablePlayerModel(StartOfRound.Instance.allPlayerObjects[num], true, true); ((Behaviour)val.helmetLight).enabled = false; val.Crouch(false); val.criticallyInjured = false; if ((Object)(object)val.playerBodyAnimator != (Object)null) { val.playerBodyAnimator.SetBool("Limp", false); } val.bleedingHeavily = false; val.activatingItem = false; val.twoHanded = false; val.inShockingMinigame = false; val.inSpecialInteractAnimation = false; val.freeRotationInInteractAnimation = false; val.disableSyncInAnimation = false; val.inAnimationWithEnemy = null; val.holdingWalkieTalkie = false; val.speakingToWalkieTalkie = false; val.isSinking = false; val.isUnderwater = false; val.sinkingValue = 0f; val.statusEffectAudio.Stop(); val.DisableJetpackControlsLocally(); val.health = 100; val.mapRadarDotAnimator.SetBool("dead", false); val.externalForceAutoFade = Vector3.zero; if (((NetworkBehaviour)val).IsOwner) { HUDManager.Instance.gasHelmetAnimator.SetBool("gasEmitting", false); val.hasBegunSpectating = false; HUDManager.Instance.RemoveSpectateUI(); HUDManager.Instance.gameOverAnimator.SetTrigger("revive"); val.hinderedMultiplier = 1f; val.isMovementHindered = 0; val.sourcesCausingSinking = 0; val.reverbPreset = StartOfRound.Instance.shipReverb; } } SoundManager.Instance.earsRingingTimer = 0f; val.voiceMuffledByEnemy = false; SoundManager.Instance.playerVoicePitchTargets[num] = 1f; SoundManager.Instance.SetPlayerPitch(1f, num); if ((Object)(object)val.currentVoiceChatIngameSettings == (Object)null) { StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } if ((Object)(object)val.currentVoiceChatIngameSettings != (Object)null) { if ((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null) { val.currentVoiceChatIngameSettings.InitializeComponents(); } if (!((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null)) { ((Component)val.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>().overridingLowPass = false; } } } } public class PossibleStringGroup : NetworkBehaviour { public List<string> PossibleValues = new List<string>(); public NetworkVariable<string> CurrentValue = new NetworkVariable<string>((string)null, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private Random _random = new Random(); public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); ChooseNew(); } public void ChooseNew() { CurrentValue.Value = RandomExtensions.NextItem<string>(_random, (IList<string>)PossibleValues); } } internal static class BongoModSoundAPI { public class BongoModSAPIEmitter { public string MatchString { get; private set; } public bool Enabled { get; private set; } public BongoModSAPIEmitter(string matchString, ConfigFile file) { MatchString = matchString; Enabled = file.Bind<bool>("SoundAPI Emitters", matchString, true, "").Value; } internal void Emit() { if (Enabled) { PlaySound(MatchString); } } } private static AudioSource _currentEmitter; private static bool _isEnabled; public static BongoModSAPIEmitter LocalPlayerDied; public static BongoModSAPIEmitter LocalPlayerRevived; public static BongoModSAPIEmitter ShipOpen; internal static void Init(ConfigFile file) { LocalPlayerDied = new BongoModSAPIEmitter("BongoMod:local_player_died", file); LocalPlayerRevived = new BongoModSAPIEmitter("BongoMod:local_player_revived", file); ShipOpen = new BongoModSAPIEmitter("BongoMod:ship_open", file); _isEnabled = true; SoundAPI.RegisterAll(Assembly.GetExecutingAssembly()); SceneManager.sceneLoaded += delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)_currentEmitter)) { _currentEmitter = new GameObject("BongoModSoundAPI-Emitter").AddComponent<AudioSource>(); _currentEmitter.spatialize = false; AudioSourceAdditionalData orCreate = AudioSourceAdditionalData.GetOrCreate(_currentEmitter); orCreate.DisableReplacing = true; Object.DontDestroyOnLoad((Object)(object)((Component)_currentEmitter).gameObject); } }; } private static void PlaySound(string matchString) { if (_isEnabled) { string text = "*"; string[] array = matchString.Split(":"); int num = 0; string[] array2 = new string[1 + array.Length]; array2[num] = text; num++; ReadOnlySpan<string> readOnlySpan = new ReadOnlySpan<string>(array); readOnlySpan.CopyTo(new Span<string>(array2).Slice(num, readOnlySpan.Length)); num += readOnlySpan.Length; string[] array3 = array2; SoundReplacementGroup val = default(SoundReplacementGroup); AudioClip val2 = default(AudioClip); if (SoundReplacementHandler.TryGetReplacementClip(array3, ref val, ref val2, (IContext)(object)DefaultConditionContext.DEFAULT)) { _currentEmitter.PlayOneShot(val2); } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "me.loaforc.bongomod"; public const string PLUGIN_NAME = "BongoMod"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace BongoMod.SoundAPI { [SoundAPICondition("BongoMod:synced_random", false, null)] public class SyncedValueCondition : Condition { public static Dictionary<string, int> IDToValue = new Dictionary<string, int>(); public static Dictionary<string, int> IDToMaxValue = new Dictionary<string, int>(); public string SyncID { get; private set; } public int Value { get; private set; } public override bool Evaluate(IContext context) { return Value == IDToValue.GetValueOrDefault(SyncID, 0); } public override void OnRegistered() { ((Condition)this).OnRegistered(); if (Value > IDToMaxValue.GetValueOrDefault(SyncID, 0)) { IDToMaxValue[SyncID] = Value; } } } } namespace BongoMod.Revive { public class CollectScrapRevive : NetworkBehaviour, IReviveMechanic { public void OnLocalPlayerRevive() { throw new NotImplementedException(); } public float GetLocalPlayerProgress() { throw new NotImplementedException(); } public string GetText() { throw new NotImplementedException(); } } public class IndividualTimedRevive : IReviveMechanic { [CompilerGenerated] private float <duration>P; private float _time; public IndividualTimedRevive(float duration) { <duration>P = duration; base..ctor(); } public void OnLocalPlayerRevive() { _time = 0f; } public float GetLocalPlayerProgress() { _time += Time.deltaTime; return _time / <duration>P; } public string GetText() { return "Waiting to revive..."; } } public interface IReviveMechanic { void OnLocalPlayerRevive(); float GetLocalPlayerProgress(); string GetText(); } public class NoOpReviveMechanic : IReviveMechanic { public void OnLocalPlayerRevive() { } public float GetLocalPlayerProgress() { return 0f; } public string GetText() { return "[error: NoOpReviveMechanic]"; } } public class WaveTimedRevive : NetworkBehaviour, IReviveMechanic { private float _time; private NetworkVariable<bool> _isTicking = new NetworkVariable<bool>(false, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); public void OnLocalPlayerRevive() { } public float GetLocalPlayerProgress() { if (!_isTicking.Value && _time == 0f) { _time = 0.1f; StartTickingRPC(); } return _time / BongoModConfig.WaveTimer; } public string GetText() { return "Reviving everyone..."; } [Rpc(/*Could not decode attribute arguments.*/)] public void StartTickingRPC() { _isTicking.Value = true; } private void Update() { if (_isTicking.Value || _time > 1f) { _time += Time.deltaTime; } } private void LateUpdate() { if (!(GetLocalPlayerProgress() < 1f)) { _time = 0f; if (((NetworkBehaviour)this).IsServer) { _isTicking.Value = false; } } } } } namespace BongoMod.Patches { internal static class DeadBodyInfoPatches { [CompilerGenerated] private static class <>O { public static hook_Update <0>__CheckIfBodyRecovered; } internal static bool BodyRecovered { get; private set; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__CheckIfBodyRecovered; if (obj == null) { hook_Update val = CheckIfBodyRecovered; <>O.<0>__CheckIfBodyRecovered = val; obj = (object)val; } DeadBodyInfo.Update += (hook_Update)obj; } private static void CheckIfBodyRecovered(orig_Update orig, DeadBodyInfo self) { orig.Invoke(self); if ((Object)(object)self.playerScript == (Object)(object)GameNetworkManager.Instance.localPlayerController) { BodyRecovered = self.isInShip; } } } internal static class HangarShipDoorPatches { [CompilerGenerated] private static class <>O { public static hook_SetDoorButtonsEnabled <0>__HangarShipDoorOnSetDoorButtonsEnabled; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__HangarShipDoorOnSetDoorButtonsEnabled; if (obj == null) { hook_SetDoorButtonsEnabled val = HangarShipDoorOnSetDoorButtonsEnabled; <>O.<0>__HangarShipDoorOnSetDoorButtonsEnabled = val; obj = (object)val; } HangarShipDoor.SetDoorButtonsEnabled += (hook_SetDoorButtonsEnabled)obj; } private static void HangarShipDoorOnSetDoorButtonsEnabled(orig_SetDoorButtonsEnabled orig, HangarShipDoor self, bool doorbuttonsenabled) { orig.Invoke(self, doorbuttonsenabled); if (doorbuttonsenabled) { BongoModSoundAPI.ShipOpen.Emit(); } } } internal static class HUDManagerPatches { [CompilerGenerated] private static class <>O { public static hook_Update <0>__UpdateVotingMeter; } internal static int RevivesThisRound; internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__UpdateVotingMeter; if (obj == null) { hook_Update val = UpdateVotingMeter; <>O.<0>__UpdateVotingMeter = val; obj = (object)val; } HUDManager.Update += (hook_Update)obj; } private static void UpdateVotingMeter(orig_Update orig, HUDManager self) { orig.Invoke(self); if (!GameNetworkManager.Instance.localPlayerController.isPlayerDead || StartOfRound.Instance.allPlayersDead || BongoMod.ReviveMechanic is NoOpReviveMechanic) { return; } if (BongoModConfig.MaximumRevives > 0 && RevivesThisRound >= BongoModConfig.MaximumRevives) { ((Component)self.holdButtonToEndGameEarlyMeter).gameObject.SetActive(false); ((TMP_Text)self.holdButtonToEndGameEarlyText).text = "Out of revives!"; ((TMP_Text)self.holdButtonToEndGameEarlyVotesText).text = string.Empty; return; } float localPlayerProgress = BongoMod.ReviveMechanic.GetLocalPlayerProgress(); ((Component)self.holdButtonToEndGameEarlyMeter).gameObject.SetActive(localPlayerProgress > 0f); self.holdButtonToEndGameEarlyMeter.fillAmount = localPlayerProgress; ((TMP_Text)self.holdButtonToEndGameEarlyText).text = BongoMod.ReviveMechanic.GetText(); ((TMP_Text)self.holdButtonToEndGameEarlyVotesText).text = string.Empty; if (localPlayerProgress >= 1f) { BongoMod.PlayerRevive.SendServer(Array.IndexOf(StartOfRound.Instance.allPlayerScripts, GameNetworkManager.Instance.localPlayerController)); BongoMod.ReviveMechanic.OnLocalPlayerRevive(); RevivesThisRound++; BongoModSoundAPI.LocalPlayerRevived.Emit(); } } } internal static class PlayerControllerPatches { [CompilerGenerated] private static class <>O { public static hook_KillPlayer <0>__TryTriggerDeathSound; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__TryTriggerDeathSound; if (obj == null) { hook_KillPlayer val = TryTriggerDeathSound; <>O.<0>__TryTriggerDeathSound = val; obj = (object)val; } PlayerControllerB.KillPlayer += (hook_KillPlayer)obj; } private static void TryTriggerDeathSound(orig_KillPlayer orig, PlayerControllerB self, Vector3 bodyvelocity, bool spawnbody, CauseOfDeath causeofdeath, int deathanimation, Vector3 positionoffset) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, bodyvelocity, spawnbody, causeofdeath, deathanimation, positionoffset); BongoModSoundAPI.LocalPlayerDied.Emit(); } } internal static class RoundManagerPatches { [CompilerGenerated] private static class <>O { public static hook_GenerateNewLevelClientRpc <0>__RefreshSoundAPIValues; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__RefreshSoundAPIValues; if (obj == null) { hook_GenerateNewLevelClientRpc val = RefreshSoundAPIValues; <>O.<0>__RefreshSoundAPIValues = val; obj = (object)val; } RoundManager.GenerateNewLevelClientRpc += (hook_GenerateNewLevelClientRpc)obj; } private static void RefreshSoundAPIValues(orig_GenerateNewLevelClientRpc orig, RoundManager self, int randomseed, int levelid, int molditerations, int moldstartposition, int[] syncdestroyedmold) { orig.Invoke(self, randomseed, levelid, molditerations, moldstartposition, syncdestroyedmold); Random random = new Random(randomseed + 395823); foreach (var (text2, num2) in SyncedValueCondition.IDToMaxValue.OrderBy((KeyValuePair<string, int> it) => it.Key)) { SyncedValueCondition.IDToValue[text2] = random.Next(0, num2 + 1); BongoMod.Logger.LogInfo((object)$"synced_random: {text2} -> {SyncedValueCondition.IDToValue[text2]} (0-{num2 + 1})"); } HUDManagerPatches.RevivesThisRound = 0; } } internal static class StartOfRoundPatches { [CompilerGenerated] private static class <>O { public static hook_Awake <0>__StartOfRoundOnAwake; public static hook_ReviveDeadPlayers <1>__StartOfRoundOnReviveDeadPlayers; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown object obj = <>O.<0>__StartOfRoundOnAwake; if (obj == null) { hook_Awake val = StartOfRoundOnAwake; <>O.<0>__StartOfRoundOnAwake = val; obj = (object)val; } StartOfRound.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__StartOfRoundOnReviveDeadPlayers; if (obj2 == null) { hook_ReviveDeadPlayers val2 = StartOfRoundOnReviveDeadPlayers; <>O.<1>__StartOfRoundOnReviveDeadPlayers = val2; obj2 = (object)val2; } StartOfRound.ReviveDeadPlayers += (hook_ReviveDeadPlayers)obj2; } private static void StartOfRoundOnReviveDeadPlayers(orig_ReviveDeadPlayers orig, StartOfRound self) { if (GameNetworkManager.Instance.localPlayerController.isPlayerDead) { BongoModSoundAPI.LocalPlayerRevived.Emit(); } orig.Invoke(self); } private static void StartOfRoundOnAwake(orig_Awake orig, StartOfRound self) { orig.Invoke(self); NetworkObjectExtensions.OnSpawn(((NetworkBehaviour)self).NetworkObject, (Action)delegate { if (((NetworkBehaviour)self).IsServer) { GameObject val = Object.Instantiate<GameObject>(BongoMod.NetworkerPrefab, ((Component)self).transform.parent); val.GetComponent<NetworkObject>().Spawn(false); } }); } } internal static class TimeOfDayPatches { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_VoteShipToLeaveEarly <>9__0_0; internal void <Init>b__0_0(orig_VoteShipToLeaveEarly orig, TimeOfDay self) { } } internal static void Init() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { hook_VoteShipToLeaveEarly val = delegate { }; <>c.<>9__0_0 = val; obj = (object)val; } TimeOfDay.VoteShipToLeaveEarly += (hook_VoteShipToLeaveEarly)obj; } } internal static class VehicleControllerPatches { [CompilerGenerated] private static class <>O { public static hook_Awake <0>__SetVehicleRadio; public static hook_SetRadioStationClientRpc <1>__FixZeekerss; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown object obj = <>O.<0>__SetVehicleRadio; if (obj == null) { hook_Awake val = SetVehicleRadio; <>O.<0>__SetVehicleRadio = val; obj = (object)val; } VehicleController.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__FixZeekerss; if (obj2 == null) { hook_SetRadioStationClientRpc val2 = FixZeekerss; <>O.<1>__FixZeekerss = val2; obj2 = (object)val2; } VehicleController.SetRadioStationClientRpc += (hook_SetRadioStationClientRpc)obj2; } private static void FixZeekerss(orig_SetRadioStationClientRpc orig, VehicleController self, int radiostation, int signalquality) { orig.Invoke(self, radiostation, signalquality); self.SetRadioOnLocalClient(true, true); } private static void SetVehicleRadio(orig_Awake orig, VehicleController self) { orig.Invoke(self); if (SoundPackDataHandler.SoundReplacements.TryGetValue("VehicleRadio", out var value)) { IContext context = (IContext)(object)DefaultConditionContext.DEFAULT; value = value.Where((SoundReplacementGroup it) => ((Conditional)it.Parent).Evaluate(context) && ((Conditional)it).Evaluate(context) && SoundReplacementHandler.CheckGroupMatches(it, new string[3] { "*", "BongoMod", "VehicleRadio" })).ToList(); AudioClip[] radioClips = (from it in value.SelectMany((SoundReplacementGroup it) => it.Sounds) where ((Conditional)it).Evaluate(context) select it.Clip).ToArray(); self.radioClips = radioClips; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }