using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AntlerShed.SkinRegistry; using AntlerShed.SkinRegistry.Events; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Bozoros.Compatibility; using Bozoros.Compatibility.Interiors; using Bozoros.Compatibility.Moons; using Bozoros.Effects; using Bozoros.NetcodePatcher; using Bozoros.Patches; using Bozoros.Skins; using DunGen; using DunGen.Graph; using GameNetcodeStuff; using HarmonyLib; using JLL.API; using JLL.ScriptableObjects; using LethalLevelLoader; using Microsoft.CodeAnalysis; using MysteryDice; using MysteryDice.Dice; using MysteryDice.Effects; using MysteryDice.MiscStuff; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.VFX; using VoxxWeatherPlugin.Behaviours; using WesleyMoonScripts; using WesleyMoonScripts.Components; using WesleyMoonScripts.ScriptableObjects; using itolib.Behaviours.Animations; using itolib.Behaviours.Enemies; using itolib.Behaviours.Interactables; using itolib.Behaviours.Kinematics; using itolib.Behaviours.Materials; using itolib.Behaviours.Networking; using itolib.Behaviours.Props; using itolib.Extensions; using itolib.Util; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("BepInEx")] [assembly: IgnoresAccessChecksTo("DunGen")] [assembly: IgnoresAccessChecksTo("EnemySkinRegistry")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.CoreModule")] [assembly: IgnoresAccessChecksTo("voxx.LethalElementsPlugin")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Bozoros")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Plugin for LethalMatt's Bozoros, adds configuration and some additional stuff.")] [assembly: AssemblyFileVersion("2.9.3.0")] [assembly: AssemblyInformationalVersion("2.9.3+f53eec2a7da56dda44a8463decbdcac09ddb37bb")] [assembly: AssemblyProduct("Bozoros")] [assembly: AssemblyTitle("Bozoros")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.9.3.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Bozoros { internal sealed class BananaPeels { [CompilerGenerated] private static class <>O { public static Action <0>__ApplyMultiplierInside; public static Action <1>__ApplyMultiplierOutside; public static Action <2>__InjectBananaPeels; public static UnityAction <3>__ResetKeysInside; public static UnityAction <4>__ResetKeysOutside; public static UnityAction <5>__UninjectBananaPeels; } private static Keyframe[]? bananaKeysInside; private static Keyframe[]? bananaKeysOutside; internal static List BananaLevels { get; } = new List(); internal static IndoorMapHazard? BananaPeelInside { get; private set; } internal static SpawnableOutsideObjectWithRarity? BananaPeelOutside { get; private set; } internal static void RegisterBananaPeel() { if (BananaPeelInside != null) { return; } BananaPeelInside = (((Object)(object)Plugin.CircusFacilityExtendedDungeon != (Object)null && Plugin.CircusFacilityExtendedDungeon.IndoorMapHazards.Count > 0) ? Plugin.CircusFacilityExtendedDungeon.IndoorMapHazards[0] : null); if (BananaPeelInside != null && (Object)(object)BananaPeelInside.hazardType != (Object)null && (Object)(object)BananaPeelInside.hazardType.prefabToSpawn != (Object)null) { bananaKeysInside = BananaPeelInside.numberToSpawn.keys; Transform val = BananaPeelInside.hazardType.prefabToSpawn.transform.Find("BananaLauncher"); PlayerLauncher val2 = default(PlayerLauncher); if ((Object)(object)val != (Object)null && ((Component)val).TryGetComponent(ref val2)) { val2.dropHeldItemAtStart = Plugin.Settings.BANANA_DROPS_ITEMS.Value < BananaPeelDropLevel.NoItems; val2.dropPlayerItemsAtEnd = Plugin.Settings.BANANA_DROPS_ITEMS.Value < BananaPeelDropLevel.HeldItem; } ((ExtendedEvent)DungeonManager.GlobalDungeonEvents.onBeforeDungeonGenerate).AddListener((Action)ApplyMultiplierInside); } if ((Object)(object)Plugin.BozorosExtendedLevel == (Object)null) { return; } for (int i = 0; i < Plugin.BozorosExtendedLevel.SelectableLevel.spawnableOutsideObjects.Length; i++) { SpawnableOutsideObjectWithRarity val3 = Plugin.BozorosExtendedLevel.SelectableLevel.spawnableOutsideObjects[i]; if ((Object)(object)val3?.spawnableObject != (Object)null && (Object)(object)val3.spawnableObject.prefabToSpawn != (Object)null && StringExtensions.CompareOrdinal(((Object)val3.spawnableObject.prefabToSpawn).name, "BananaPeelSpawn")) { BananaPeelOutside = val3; bananaKeysOutside = val3.randomAmount.keys; break; } } RegisterBananaLevel(Plugin.BozorosExtendedLevel); } internal static void RegisterBananaLevel(ExtendedLevel extendedLevel) { int num = Array.IndexOf(extendedLevel.SelectableLevel.spawnableOutsideObjects, BananaPeelOutside); if (num == -1) { SelectableLevel selectableLevel = extendedLevel.SelectableLevel; SpawnableOutsideObjectWithRarity[] spawnableOutsideObjects = extendedLevel.SelectableLevel.spawnableOutsideObjects; int num2 = 0; SpawnableOutsideObjectWithRarity[] array = (SpawnableOutsideObjectWithRarity[])(object)new SpawnableOutsideObjectWithRarity[1 + spawnableOutsideObjects.Length]; ReadOnlySpan readOnlySpan = new ReadOnlySpan(spawnableOutsideObjects); readOnlySpan.CopyTo(new Span(array).Slice(num2, readOnlySpan.Length)); num2 += readOnlySpan.Length; array[num2] = BananaPeelOutside; selectableLevel.spawnableOutsideObjects = array; } extendedLevel.LevelEvents.onLevelLoaded.AddListener((Action)ApplyMultiplierOutside); BananaLevels.Add(extendedLevel); } private static void ApplyMultiplierInside() { //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown bool flag = false; for (int i = 0; i < BananaLevels.Count; i++) { if (BananaLevels[i].IsCurrentLevel) { if ((Object)(object)DungeonManager.CurrentExtendedDungeonFlow != (Object)null && ((Object)(object)Plugin.CircusFacilityExtendedDungeon == (Object)null || !Plugin.CircusFacilityExtendedDungeon.IsCurrentDungeon)) { ((ExtendedEvent)DungeonManager.CurrentExtendedDungeonFlow.DungeonEvents.onSpawnedSyncedObjects).AddListener((Action)InjectBananaPeels); } flag = true; break; } } if (!flag && (!((Object)(object)Plugin.CircusFacilityExtendedDungeon != (Object)null) || !Plugin.CircusFacilityExtendedDungeon.IsCurrentDungeon)) { return; } float value = Plugin.Settings.BANANA_MULTIPLIER_INSIDE.Value; if (value != 1f && BananaPeelInside != null) { Keyframe[] keys = BananaPeelInside.numberToSpawn.keys; for (int j = 0; j < keys.Length; j++) { ref Keyframe reference = ref keys[j]; ((Keyframe)(ref reference)).value = ((Keyframe)(ref reference)).value * value; } BananaPeelInside.numberToSpawn.keys = keys; } if ((Object)(object)StartOfRound.Instance != (Object)null) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<3>__ResetKeysInside; if (obj == null) { UnityAction val = ResetKeysInside; <>O.<3>__ResetKeysInside = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).AddListener((UnityAction)obj); } } private static void ApplyMultiplierOutside() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown float value = Plugin.Settings.BANANA_MULTIPLIER_OUTSIDE.Value; if (value != 1f && BananaPeelOutside != null) { Keyframe[] keys = BananaPeelOutside.randomAmount.keys; for (int i = 0; i < keys.Length; i++) { ref Keyframe reference = ref keys[i]; ((Keyframe)(ref reference)).value = ((Keyframe)(ref reference)).value * value; } BananaPeelOutside.randomAmount.keys = keys; } if ((Object)(object)StartOfRound.Instance != (Object)null) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<4>__ResetKeysOutside; if (obj == null) { UnityAction val = ResetKeysOutside; <>O.<4>__ResetKeysOutside = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).AddListener((UnityAction)obj); } } private static void ResetKeysInside() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)StartOfRound.Instance)) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<3>__ResetKeysInside; if (obj == null) { UnityAction val = ResetKeysInside; <>O.<3>__ResetKeysInside = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).RemoveListener((UnityAction)obj); } if (bananaKeysInside != null && BananaPeelInside != null) { BananaPeelInside.numberToSpawn.keys = bananaKeysInside; } } private static void ResetKeysOutside() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if ((Object)(object)StartOfRound.Instance != (Object)null) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<4>__ResetKeysOutside; if (obj == null) { UnityAction val = ResetKeysOutside; <>O.<4>__ResetKeysOutside = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).RemoveListener((UnityAction)obj); } if (bananaKeysOutside != null && BananaPeelOutside != null) { BananaPeelOutside.randomAmount.keys = bananaKeysOutside; } } private static void InjectBananaPeels() { //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Expected O, but got Unknown if ((Object)(object)DungeonManager.CurrentExtendedDungeonFlow != (Object)null) { ((ExtendedEvent)DungeonManager.CurrentExtendedDungeonFlow.DungeonEvents.onSpawnedSyncedObjects).RemoveListener((Action)InjectBananaPeels); } if ((Object)(object)LevelManager.CurrentExtendedLevel != (Object)null && BananaPeelInside != null && (Object)(object)BananaPeelInside.hazardType != (Object)null && (Object)(object)BananaPeelInside.hazardType.prefabToSpawn != (Object)null) { IndoorMapHazard[] indoorMapHazards = LevelManager.CurrentExtendedLevel.SelectableLevel.indoorMapHazards; int num = Array.IndexOf(indoorMapHazards, BananaPeelInside); if (num == -1) { SelectableLevel selectableLevel = LevelManager.CurrentExtendedLevel.SelectableLevel; IndoorMapHazard[] array = indoorMapHazards; int num2 = 0; IndoorMapHazard[] array2 = (IndoorMapHazard[])(object)new IndoorMapHazard[1 + array.Length]; ReadOnlySpan readOnlySpan = new ReadOnlySpan(array); readOnlySpan.CopyTo(new Span(array2).Slice(num2, readOnlySpan.Length)); num2 += readOnlySpan.Length; array2[num2] = BananaPeelInside; selectableLevel.indoorMapHazards = array2; } } if ((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.dungeonGenerator != (Object)null && (Object)(object)RoundManager.Instance.dungeonGenerator.Root != (Object)null && BananaPeelInside != null && (Object)(object)BananaPeelInside.hazardType != (Object)null && (Object)(object)BananaPeelInside.hazardType.prefabToSpawn != (Object)null) { RandomMapObject[] componentsInChildren = RoundManager.Instance.dungeonGenerator.Root.GetComponentsInChildren(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].spawnablePrefabs.Add(BananaPeelInside.hazardType.prefabToSpawn); } } if ((Object)(object)StartOfRound.Instance != (Object)null) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<5>__UninjectBananaPeels; if (obj == null) { UnityAction val = UninjectBananaPeels; <>O.<5>__UninjectBananaPeels = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).AddListener((UnityAction)obj); } } private static void UninjectBananaPeels() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if ((Object)(object)StartOfRound.Instance != (Object)null) { SimpleEvent startNewRoundEvent = StartOfRound.Instance.StartNewRoundEvent; object obj = <>O.<5>__UninjectBananaPeels; if (obj == null) { UnityAction val = UninjectBananaPeels; <>O.<5>__UninjectBananaPeels = val; obj = (object)val; } ((UnityEvent)startNewRoundEvent).RemoveListener((UnityAction)obj); } if ((Object)(object)LevelManager.CurrentExtendedLevel != (Object)null && BananaPeelInside != null && (Object)(object)BananaPeelInside.hazardType != (Object)null && (Object)(object)BananaPeelInside.hazardType.prefabToSpawn != (Object)null) { LevelManager.CurrentExtendedLevel.SelectableLevel.indoorMapHazards = Array.FindAll(LevelManager.CurrentExtendedLevel.SelectableLevel.indoorMapHazards, (IndoorMapHazard mapHazard) => mapHazard != BananaPeelInside); } } } public enum BananaPeelDropLevel { AllItems = -1, HeldItem, NoItems } public sealed class Config { public ConfigEntry STREAMER_FRIENDLY { get; private set; } public ConfigEntry FIREWORK_PARTICLES { get; private set; } public ConfigEntry CONFETTI_PARTICLES { get; private set; } public ConfigEntry BALLOON_PARTICLES { get; private set; } public ConfigEntry FIREWORK_MUSIC_VOLUME { get; private set; } public ConfigEntry FIREWORK_EXPLOSION_VOLUME { get; private set; } public ConfigEntry ANNOUNCER_VOLUME { get; private set; } public ConfigEntry TENT_MUSIC_VOLUME { get; private set; } public ConfigEntry DROPSHIP_VOLUME { get; private set; } public ConfigEntry GOOFY_PUFFER_NAMES { get; private set; } public ConfigEntry CLOWN_GIANT_NAMES { get; private set; } public ConfigEntry SANTA_BUTLER_NAMES { get; private set; } public ConfigEntry EXTRA_PUFFER_SPAWNS { get; private set; } public ConfigEntry FOGGY_BARBER_SPAWNS { get; private set; } public ConfigEntry BALLOON_INSTRUCTIONS { get; private set; } public ConfigEntry BALLOON_PRICE { get; private set; } public ConfigEntry FERRIS_WHEEL_EXIT { get; private set; } public ConfigEntry BANANA_MULTIPLIER_INSIDE { get; private set; } public ConfigEntry BANANA_MULTIPLIER_OUTSIDE { get; private set; } public ConfigEntry BANANA_DROPS_ITEMS { get; private set; } public ConfigEntry MODIFY_SHIP_NODE { get; private set; } public ConfigEntry ADD_DROPSHIP_NODE { get; private set; } public ConfigEntry REDUCE_MOTION_SICKNESS { get; private set; } public ConfigEntry CIRCUS_FACILITY_MIMICS { get; private set; } public ConfigEntry CIRCUS_PANDORAMUS_PORTAL { get; private set; } public ConfigEntry CIRCUS_STARLANCERZERO_DOOR { get; private set; } public ConfigEntry BOZO_DICE_EFFECTS { get; private set; } public ConfigEntry WESLEY_INTEGRATION { get; private set; } public ConfigEntry WESLEY_INJECT_SCRAPS { get; private set; } public ConfigEntry BLACK_FOG_VOIDHEAD_SPAWNS { get; private set; } public Config(ConfigFile cfg) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Expected O, but got Unknown //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Expected O, but got Unknown //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Expected O, but got Unknown //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Expected O, but got Unknown //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Expected O, but got Unknown //IL_0356: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Expected O, but got Unknown cfg.SaveOnConfigSet = false; STREAMER_FRIENDLY = cfg.Bind("General", "StreamerFriendly", true, "Whether the music is streamer-friendly or not."); FIREWORK_PARTICLES = cfg.Bind("Particles", "FireworkParticles", 1f, new ConfigDescription("Intensity of firework particles at the end of a clear day.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); CONFETTI_PARTICLES = cfg.Bind("Particles", "ConfettiParticles", 1f, new ConfigDescription("Intensity of confetti particles during eclipsed weather.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); BALLOON_PARTICLES = cfg.Bind("Particles", "BalloonParticles", 1f, new ConfigDescription("Intensity of balloon particles during stormy weather.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); FIREWORK_MUSIC_VOLUME = cfg.Bind("Audio", "FireworkMusicVolume", 1f, new ConfigDescription("Volume level for the firework music at the end of a clear day.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); FIREWORK_EXPLOSION_VOLUME = cfg.Bind("Audio", "FireworkExplosionVolume", 1f, new ConfigDescription("Volume level for the firework explosion sound effects at the end of a clear day.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); ANNOUNCER_VOLUME = cfg.Bind("Audio", "AnnouncerVolume", 2f, new ConfigDescription("Volume level for the announcer voice at the end of each day.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); TENT_MUSIC_VOLUME = cfg.Bind("Audio", "TentMusicVolume", 1f, new ConfigDescription("Volume level for the circus tent music near every entrance.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); DROPSHIP_VOLUME = cfg.Bind("Audio", "DropshipVolume", 1f, new ConfigDescription("Volume level for the dropship's music when delivering items.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 2f), Array.Empty())); GOOFY_PUFFER_NAMES = cfg.Bind("Enemies", "GoofyPufferNames", "Steve,Krusty,Ronald,Arthur,Toodles,Jingles,Dusty,Dumbo,Bingo,Whistle,Mittens,Pancake,Freckles,Chester,Oddball,Snuggles,Charlie,Bashful,Flower,Jumbo,Jimbo,Snickers,Pogo,Giggles,Loofy,Blinky,Ruffles,Dinky,Beebo,Chuckles", "A comma-separated list of names for Spore Lizard enemy variants to show in their scan node. Requires restart."); CLOWN_GIANT_NAMES = cfg.Bind("Enemies", "ClownGiantNames", "Penn,Teller,Houdini,Dante,Copperfield,Blaine,Angel,Borden,Angier,Merlin,Kaito,Oz,Zatara,Mysterio,Riddler,Eisenheim,Gallico,Splendini", "A comma-separated list of names for Forest Giant enemy variants to show in their scan node. Requires restart."); SANTA_BUTLER_NAMES = cfg.Bind("Enemies", "SantaButlerNames", "Santa Claus,St. Nicholas,Joulupukki,Sinterklaas,Ded Moroz,Julenisse,Mikulás,Shengdan Laoren,Père Noël,Krampus,Knecht Ruprecht,Kriss Kringle", "A comma-separated list of names for Santa Butler enemy variants to show in their scan node. Requires restart."); EXTRA_PUFFER_SPAWNS = cfg.Bind("Enemies", "ExtraPufferSpawns", true, "Whether there should be additional Goofy Puffer spawns at the start of a round or not. Spore Lizards are capped at a maximum of 2 in vanilla."); FOGGY_BARBER_SPAWNS = cfg.Bind("Enemies", "FoggyBarberSpawns", true, "Whether there should be additional outside Barber spawns during Foggy weather or not."); BALLOON_INSTRUCTIONS = cfg.Bind("Mechanics", "BalloonInstructions", true, "Show a one-time notification with instructions on how to operate balloons. Shows once per session, until the game is reopened."); BALLOON_PRICE = cfg.Bind("Mechanics", "BalloonPrice", 15, new ConfigDescription("Credits required to purchase a one-time balloon shortcut from one of the balloon stands around the map. Can be set to -1 to disable (if you HATE fun).", (AcceptableValueBase)(object)new AcceptableValueRange(-1, 200), Array.Empty())); FERRIS_WHEEL_EXIT = cfg.Bind("Mechanics", "FerrisWheelExit", true, "Whether the Fire Exit inside the Ferris Wheel should spawn or not — wormholes may not be immersive!"); BANANA_MULTIPLIER_INSIDE = cfg.Bind("Mechanics", "BananaMultiplierInside", 1f, new ConfigDescription("Multiply inside banana peel hazard spawning curve across the board (minimum and maximum) by this value. Set to 0 to disable banana peels inside.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 3f), Array.Empty())); BANANA_MULTIPLIER_OUTSIDE = cfg.Bind("Mechanics", "BananaMultiplierOutside", 1f, new ConfigDescription("Multiply outside banana peel hazard spawning curve across the board (minimum and maximum) by this value. Set to 0 to disable banana peels outside.", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 3f), Array.Empty())); BANANA_DROPS_ITEMS = cfg.Bind("Mechanics", "BananaDropsItems", BananaPeelDropLevel.HeldItem, "Whether slipping on a banana peel causes players to drop items."); MODIFY_SHIP_NODE = cfg.Bind("Other", "ModifyShipNode", false, "Increase (subjective) accuracy of the ship's scan node."); ADD_DROPSHIP_NODE = cfg.Bind("Other", "AddDropshipNode", true, "Add a scan node to the dropship and allow it to be scanned."); REDUCE_MOTION_SICKNESS = cfg.Bind("Other", "ReduceMotionSickness", false, "Attempts to reduce motion sickness a bit. Currently only stops the camera turning when going through the twisted hallway."); CIRCUS_FACILITY_MIMICS = cfg.Bind("Compatibility", "CircusFacilityMimics", true, "Allow x753's Mimics to spawn in Circus Facility."); CIRCUS_PANDORAMUS_PORTAL = cfg.Bind("Compatibility", "CircusPandoramusPortal", true, "Enable Circus Facility's special portal for DemonMae's Pandoramus; otherwise it'll just be the same as regular facility. Requires restart."); CIRCUS_STARLANCERZERO_DOOR = cfg.Bind("Compatibility", "CircusStarlancerZeroDoor", true, "Enable Circus Facility swapping StarlancerZero's main entrance door. Requires restart."); BOZO_DICE_EFFECTS = cfg.Bind("Compatibility", "BozoEmergencyDiceEffects", true, "Enable Bozoros' custom effects for Emergency Dice. Requires restart."); WESLEY_INTEGRATION = cfg.Bind("Compatibility", "WesleyIntegration", false, "Enable progression integration with Wesley's Moons: Journeys. Requires restart."); WESLEY_INJECT_SCRAPS = cfg.Bind("Compatibility", "WesleyInjectScraps", true, "Add a few Wesley-related scraps to Bozoros' spawn pool, if Wesley integration is active. Requires restart."); BLACK_FOG_VOIDHEAD_SPAWNS = cfg.Bind("Compatibility", "BlackFogVoidheadSpawns", true, "Whether temporary Voidheads should spawn during Black Fog weather or not. Requires both Wesley's Interiors and DemonMae's Black Fog weather."); BANANA_DROPS_ITEMS.SettingChanged += delegate(object setting, EventArgs _) { if (BananaPeels.BananaPeelInside != null && !((Object)(object)BananaPeels.BananaPeelInside.hazardType == (Object)null) && !((Object)(object)BananaPeels.BananaPeelInside.hazardType.prefabToSpawn == (Object)null)) { Transform val = BananaPeels.BananaPeelInside.hazardType.prefabToSpawn.transform.Find("BananaLauncher"); PlayerLauncher val3 = default(PlayerLauncher); if (setting is ConfigEntry val2 && (Object)(object)val != (Object)null && ((Component)val).TryGetComponent(ref val3)) { val3.dropHeldItemAtStart = val2.Value < BananaPeelDropLevel.NoItems; val3.dropPlayerItemsAtEnd = val2.Value < BananaPeelDropLevel.HeldItem; } } }; cfg.OrphanedEntries.Clear(); cfg.SaveOnConfigSet = true; cfg.Save(); } } [BepInDependency("imabatby.lethallevelloader", "1.6.9")] [BepInDependency("pacoito.itolib", "0.9.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("LethalMatt.Bozoros", "BozorosPlugin", "2.9.3")] public class Plugin : BaseUnityPlugin { public const string PLUGIN_GUID = "LethalMatt.Bozoros"; public const string PLUGIN_NAME = "BozorosPlugin"; public const string VERSION = "2.9.3"; internal static ManualLogSource StaticLogger { get; private set; } internal static Harmony Harmony { get; private set; } public static Config Settings { get; private set; } internal static AssetBundle? BozorosBundle { get; private set; } internal static ExtendedLevel? BozorosExtendedLevel { get; private set; } internal static ExtendedDungeonFlow? CircusFacilityExtendedDungeon { get; private set; } private void Awake() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown StaticLogger = ((BaseUnityPlugin)this).Logger; try { Settings = new Config(((BaseUnityPlugin)this).Config); Harmony = new Harmony("LethalMatt.Bozoros"); LoadAssets(); Harmony.PatchAll(typeof(LoadPatch)); Harmony.PatchAll(typeof(CarjackBlokePatch)); Harmony.PatchAll(typeof(StingrayPatch)); StaticLogger.LogInfo((object)"'BozorosPlugin' loaded!"); } catch (Exception arg) { StaticLogger.LogError((object)string.Format("Error while initializing '{0}': {1}", "BozorosPlugin", arg)); } } private static void LoadAssets() { AssetBundleLoader.AddOnExtendedModLoadedListener((Action)delegate(ExtendedMod bozorosExtended) { if (bozorosExtended.ExtendedLevels.Count > 0 && (Object)(object)bozorosExtended.ExtendedLevels[0] != (Object)null) { BozorosExtendedLevel = bozorosExtended.ExtendedLevels[0]; } else if ((Object)(object)BozorosExtendedLevel == (Object)null) { StaticLogger.LogError((object)"Could not load Bozoros... ExtendedLevel not found!"); } if (bozorosExtended.ExtendedDungeonFlows.Count > 0 && (Object)(object)bozorosExtended.ExtendedDungeonFlows[0] != (Object)null) { CircusFacilityExtendedDungeon = bozorosExtended.ExtendedDungeonFlows[0]; } else if ((Object)(object)CircusFacilityExtendedDungeon == (Object)null) { StaticLogger.LogError((object)"Could not load CircusFacility... ExtendedDungeonFlow not found!"); } if ((Object)(object)BozorosExtendedLevel != (Object)null && (Object)(object)CircusFacilityExtendedDungeon != (Object)null) { BananaPeels.RegisterBananaPeel(); } }, "LethalMatt", "Bozoros"); AssetBundleLoader.AddOnLethalBundleLoadedListener((Action)delegate(AssetBundle assetBundle) { BozorosBundle = assetBundle; }, "bozoros.lethalbundle"); AssetBundleLoader.AddOnExtendedModLoadedListener((Action)delegate(ExtendedMod extendedMod) { PlayZoneCompatibility.PlayZoneExtendedMod = extendedMod; }, "LethalMatt", "PlayZone"); if (EnemySkinRegistryCompatibility.Enabled) { EnemySkinRegistryCompatibility.LoadSkins(); EnemySkinRegistryCompatibility.RegisterSkins(); } if (WesleyCompatibility.Enabled) { WesleyCompatibility.RegisterWesleyBozoIntegration(); } if (Settings.CIRCUS_PANDORAMUS_PORTAL.Value) { PandoramusCompatibility.RegisterCompat(); } if (Settings.CIRCUS_STARLANCERZERO_DOOR.Value) { StarlancerZeroCompatibility.RegisterCompat(); } } } } namespace Bozoros.Skins { internal sealed class ClownGiant : Skin, Skinner { public string Label => "Clown Giant"; public string Id => "LethalMatt.Bozoros.ClownGiant"; public string EnemyId => "LethalCompany.ForestKeeper"; public Texture2D Icon { get { if (!((Object)(object)EnemySkinRegistryCompatibility.BozorosIcon != (Object)null)) { return Texture2D.blackTexture; } return EnemySkinRegistryCompatibility.BozorosIcon; } } public static Material? ClownGiantMaterial { get; internal set; } public static GameObject? ClownHair { get; internal set; } public static GameObject? ClownNose { get; internal set; } public static List ClownGiantNames { get; internal set; } = new List(); public static Random? Random { get; internal set; } public Skinner CreateSkinner() { return (Skinner)(object)new ClownGiant(); } public void Apply(GameObject enemy) { ForestGiantAI val = default(ForestGiantAI); if ((Object)(object)ClownGiantMaterial == (Object)null || (Object)(object)ClownNose == (Object)null || (Object)(object)ClownHair == (Object)null || (Object)(object)enemy == (Object)null || !enemy.TryGetComponent(ref val)) { return; } Transform val2 = ((Component)val).transform.Find("FGiantModelContainer"); if ((Object)(object)val2 == (Object)null) { return; } SkinnedMeshRenderer val3 = default(SkinnedMeshRenderer); for (int i = 0; i < 3; i++) { Transform child = val2.GetChild(i); if ((Object)(object)child != (Object)null && ((Component)child).TryGetComponent(ref val3)) { ((Renderer)val3).sharedMaterial = ClownGiantMaterial; } } Transform val4 = val2.Find("AnimContainer/metarig/spine/spine.003"); if ((Object)(object)val4 != (Object)null) { Object.Instantiate(ClownHair, val4); Object.Instantiate(ClownNose, val4); } Transform child2 = ((Component)val).transform.GetChild(1); ScanNodeProperties val5 = default(ScanNodeProperties); if (ClownGiantNames.Count > 0 && (Object)(object)child2 != (Object)null && ((Component)child2).TryGetComponent(ref val5)) { val5.headerText = ClownGiantNames[Random?.Next(0, ClownGiantNames.Count) ?? 0] ?? ""; val5.subText = "Clown Giant"; } } public void Remove(GameObject enemy) { } } internal sealed class GoofyPuffer : Skin, Skinner { public string Label => "Goofy Puffer"; public string Id => "LethalMatt.Bozoros.GoofyPuffer"; public string EnemyId => "LethalCompany.SporeLizard"; public Texture2D Icon { get { if (!((Object)(object)EnemySkinRegistryCompatibility.BozorosIcon != (Object)null)) { return Texture2D.blackTexture; } return EnemySkinRegistryCompatibility.BozorosIcon; } } public static Material? GoofyPufferMaterial { get; internal set; } public static List GoofyPufferNames { get; internal set; } = new List(); public static Random? Random { get; internal set; } public Skinner CreateSkinner() { return (Skinner)(object)new GoofyPuffer(); } public void Apply(GameObject enemy) { PufferAI val = default(PufferAI); if ((Object)(object)GoofyPufferMaterial == (Object)null || (Object)(object)enemy == (Object)null || !enemy.TryGetComponent(ref val)) { return; } Transform val2 = ((Component)val).transform.Find("PufferModel/BezierCurve"); if (!((Object)(object)val2 == (Object)null)) { SkinnedMeshRenderer val3 = default(SkinnedMeshRenderer); if (((Component)val2).TryGetComponent(ref val3)) { ((Renderer)val3).sharedMaterial = GoofyPufferMaterial; } Transform child = ((Component)val).transform.GetChild(1); ScanNodeProperties val4 = default(ScanNodeProperties); if (GoofyPufferNames.Count > 0 && (Object)(object)child != (Object)null && ((Component)child).TryGetComponent(ref val4)) { val4.headerText = GoofyPufferNames[Random?.Next(0, GoofyPufferNames.Count) ?? 0] ?? ""; val4.subText = "Goofy Puffer"; } } } public void Remove(GameObject enemy) { } } internal sealed class SantaButler : Skin, Skinner, ButlerEventHandler, EnemyEventHandler { public string Label => "Santa Butler"; public string Id => "LethalMatt.Bozoros.SantaButler"; public string EnemyId => "LethalCompany.Butler"; public Texture2D Icon { get { if (!((Object)(object)EnemySkinRegistryCompatibility.BozorosIcon != (Object)null)) { return Texture2D.blackTexture; } return EnemySkinRegistryCompatibility.BozorosIcon; } } public static Mesh? CandyCaneMesh { get; internal set; } public static Material? CandyCaneMaterial { get; internal set; } public static GameObject? CandyCaneKnife { get; internal set; } public static Material? SantaMaterial { get; internal set; } public static GameObject? SantaHat { get; internal set; } public static Texture2D? GrinchHornetsTexture { get; internal set; } public static List SantaButlerNames { get; internal set; } = new List(); public static Random? Random { get; internal set; } public Skinner CreateSkinner() { return (Skinner)(object)new SantaButler(); } public void Apply(GameObject enemy) { ButlerEnemyAI val = default(ButlerEnemyAI); if ((Object)(object)SantaMaterial == (Object)null || (Object)(object)CandyCaneMesh == (Object)null || (Object)(object)CandyCaneMaterial == (Object)null || (Object)(object)enemy == (Object)null || !enemy.TryGetComponent(ref val) || StringExtensions.CompareOrdinal(((Object)val).name.Substring(0, 4), "Ross")) { return; } Transform val2 = ((Component)val).transform.Find("MeshContainer"); if ((Object)(object)val2 == (Object)null) { return; } SkinnedMeshRenderer val3 = default(SkinnedMeshRenderer); for (int i = 0; i < 3; i++) { Transform child = val2.GetChild(i); if ((Object)(object)child != (Object)null && ((Component)child).TryGetComponent(ref val3)) { ((Renderer)val3).sharedMaterial = SantaMaterial; } } Transform val4 = val2.Find("Rig 1/Arms/RightArm/upperRightArmContainer/upper_arm.R_target/Knife"); MeshFilter val5 = default(MeshFilter); MeshRenderer val6 = default(MeshRenderer); if ((Object)(object)val4 != (Object)null && ((Component)val4).TryGetComponent(ref val5) && ((Component)val4).TryGetComponent(ref val6)) { val5.sharedMesh = CandyCaneMesh; ((Renderer)val6).sharedMaterial = CandyCaneMaterial; } if ((Object)(object)CandyCaneKnife != (Object)null) { Transform val7 = ((Component)val).transform.Find("BloodStabParticle"); if ((Object)(object)val7 != (Object)null) { Object.Destroy((Object)(object)((Component)val7).gameObject); } GameObject val8 = Object.Instantiate(((Component)CandyCaneKnife.transform.GetChild(2)).gameObject, ((Component)val).transform, false); val.stabBloodParticle = val8.GetComponent(); val.knifePrefab = CandyCaneKnife; } Transform val9 = val2.Find("metarig/spine/spine.001/NeckContainer/spine.004/face"); if ((Object)(object)val9 != (Object)null) { Object.Instantiate(SantaHat, val9); } Transform val10 = ((Component)val).transform.Find("ScanNode"); ScanNodeProperties val11 = default(ScanNodeProperties); if (SantaButlerNames.Count > 0 && (Object)(object)val10 != (Object)null && ((Component)val10).TryGetComponent(ref val11)) { val11.headerText = SantaButlerNames[Random?.Next(0, SantaButlerNames.Count) ?? 0] ?? ""; val11.subText = "Santa Butler"; } EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)val, (EnemyEventHandler)(object)this); } public void OnSpawnHornets(ButlerEnemyAI instance, ButlerBeesEnemyAI hornets) { if (!StringExtensions.CompareOrdinal(((Object)instance).name.Substring(0, 4), "Ross")) { Transform child = ((Component)hornets).transform.GetChild(0); ScanNodeProperties val = default(ScanNodeProperties); if ((Object)(object)child != (Object)null && ((Component)child).TryGetComponent(ref val)) { val.headerText = "Grinch Particles"; } VisualEffect val2 = default(VisualEffect); if ((Object)(object)GrinchHornetsTexture != (Object)null && ((Component)((Component)hornets).transform.Find("BugSwarmParticle")).TryGetComponent(ref val2)) { val2.SetTexture("BugTexture", (Texture)(object)GrinchHornetsTexture); } } } public void Remove(GameObject enemy) { } } } namespace Bozoros.Patches { [HarmonyPatch] internal static class CarjackBlokePatch { [HarmonyPatch(typeof(CadaverBloomAI), "Start")] [HarmonyPostfix] private static void CarjackStartPost(CadaverBloomAI __instance) { if ((Object)(object)Plugin.BozorosExtendedLevel != (Object)null && Plugin.BozorosExtendedLevel.IsCurrentLevel) { Transform val = ((Component)__instance).transform.Find("ScanNode"); ScanNodeProperties val2 = default(ScanNodeProperties); if ((Object)(object)val != (Object)null && ((Component)val).TryGetComponent(ref val2)) { val2.headerText = "Carjack Bloke"; val2.subText = "Ca_____ Blo__"; val2.minRange = 0; val2.maxRange = 32; } } } [HarmonyPatch(typeof(CadaverBloomAI), "BurstForth")] [HarmonyPostfix] private static void BurstForthPost(PlayerControllerB player, ScanNodeProperties ___playerScanNode) { if ((Object)(object)Plugin.BozorosExtendedLevel != (Object)null && Plugin.BozorosExtendedLevel.IsCurrentLevel && (Object)(object)___playerScanNode != (Object)null) { ___playerScanNode.headerText = "Car, Jacked"; ___playerScanNode.subText = "License: " + player.playerUsername; } } } [HarmonyPatch] internal sealed class LoadPatch { public static bool FirstLoad { get; private set; } = true; public static event Action? OnFinishGeneratingLevelPost; public static event Action? OnFinishGeneratingNewLevelClientRpcPost; [HarmonyPatch(typeof(RoundManager), "FinishGeneratingLevel")] [HarmonyPostfix] private static void FinishGeneratingLevelPost() { LoadPatch.OnFinishGeneratingLevelPost?.Invoke(); } [HarmonyPatch(typeof(RoundManager), "FinishGeneratingNewLevelClientRpc")] [HarmonyPostfix] private static void FinishGeneratingNewLevelClientRpcPost() { LoadPatch.OnFinishGeneratingNewLevelClientRpcPost?.Invoke(); } [HarmonyPatch(typeof(MenuManager), "Start")] [HarmonyPrefix] private static void MenuManagerStartPre() { if (FirstLoad) { FirstLoad = false; if (EmergencyDiceCompatibility.Enabled && Plugin.Settings.BOZO_DICE_EFFECTS.Value) { EmergencyDiceCompatibility.RegisterDiceEffects(); Plugin.Harmony.PatchAll(typeof(EmergencyDiceCompatibility)); } if (LethalElementsCompatibility.Enabled) { LethalElementsCompatibility.RegisterSnozoros(); } Plugin.onSetupComplete += PerformVersion80Integration; } } private static void PerformVersion80Integration() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Expected O, but got Unknown if ((Object)(object)Plugin.BozorosExtendedLevel == (Object)null || (Object)(object)Plugin.BozorosExtendedLevel.SelectableLevel == (Object)null) { return; } EnemyType pumaNutsInYourMouth = default(EnemyType); if (SearchContent.TryFindEnemy(ref pumaNutsInYourMouth, "Feiopar", false)) { int num = Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies.FindIndex((SpawnableEnemyWithRarity enemy) => (Object)(object)enemy.enemyType == (Object)(object)pumaNutsInYourMouth); if (num == -1) { Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies.Add(new SpawnableEnemyWithRarity(pumaNutsInYourMouth, 3)); } else { Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies[num].rarity = 3; } num = Plugin.BozorosExtendedLevel.SelectableLevel.Enemies.FindIndex((SpawnableEnemyWithRarity enemy) => (Object)(object)enemy.enemyType == (Object)(object)pumaNutsInYourMouth); if (num == -1) { Plugin.BozorosExtendedLevel.SelectableLevel.Enemies.Add(new SpawnableEnemyWithRarity(pumaNutsInYourMouth, 28)); } else { Plugin.BozorosExtendedLevel.SelectableLevel.Enemies[num].rarity = 28; } } EnemyType fish = default(EnemyType); if (SearchContent.TryFindEnemy(ref fish, "Stingray", false)) { int num2 = Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies.FindIndex((SpawnableEnemyWithRarity enemy) => (Object)(object)enemy.enemyType == (Object)(object)fish); if (num2 == -1) { Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies.Add(new SpawnableEnemyWithRarity(fish, 67)); } else { Plugin.BozorosExtendedLevel.SelectableLevel.DaytimeEnemies[num2].rarity = 67; } } EnemyType carjackBloke = default(EnemyType); if (SearchContent.TryFindEnemy(ref carjackBloke, "Cadaver Growths", false)) { int num3 = Plugin.BozorosExtendedLevel.SelectableLevel.Enemies.FindIndex((SpawnableEnemyWithRarity enemy) => (Object)(object)enemy.enemyType == (Object)(object)carjackBloke); if (num3 == -1) { Plugin.BozorosExtendedLevel.SelectableLevel.Enemies.Add(new SpawnableEnemyWithRarity(carjackBloke, 42)); } else { Plugin.BozorosExtendedLevel.SelectableLevel.Enemies[num3].rarity = 42; } } Plugin.BozorosExtendedLevel.LevelEvents.onLevelLoaded.AddListener((Action)delegate { //IL_0011: 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) Transform val = null; Scene sceneByName = SceneManager.GetSceneByName(Plugin.BozorosExtendedLevel.SelectableLevel.sceneName); GameObject[] rootGameObjects = ((Scene)(ref sceneByName)).GetRootGameObjects(); for (int i = 0; i < rootGameObjects?.Length; i++) { if (StringExtensions.CompareOrdinal(((Object)rootGameObjects[i]).name, "Environment")) { val = rootGameObjects[i].transform; break; } } if (!((Object)(object)val == (Object)null)) { Transform val2 = val.Find("Bozoros_map"); if (!((Object)(object)val2 == (Object)null)) { Transform val3 = val2.Find("Trees"); if ((Object)(object)val3 != (Object)null) { for (int j = 0; j < val3.childCount; j++) { Transform child = val3.GetChild(j); if ((Object)(object)child != (Object)null) { ((Component)child).tag = "Tree"; } } } } } }); } } [HarmonyPatch] internal static class StingrayPatch { [HarmonyPatch(typeof(StingrayAI), "MakePlayerSlipOnSlime")] [HarmonyTranspiler] private static IEnumerable SlipOnSlimeOutsideTranspiler(IEnumerable instructions) { //IL_0019: 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) //IL_0039: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown FieldInfo field = typeof(PlayerControllerB).GetField("isInsideFactory", BindingFlags.Instance | BindingFlags.Public); CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[3] { new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)field, (string)null), new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null) }); if (val.IsValid) { val.RemoveInstructions(3); return val.InstructionEnumeration(); } return instructions; } } } namespace Bozoros.Effects { internal sealed class BananaPeelDiceEffect : NetworkedDiceEffect { public override EffectType Outcome => (EffectType)1; public override bool ShowDefaultTooltip => false; public override string Name => "Up! Up! Up! Banana!"; public override string Tooltip => "Potassium levels increased..."; public override void Use() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) SpawnBananaPeelRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)GameNetworkManager.Instance.localPlayerController)); List list = StartOfRound.Instance.allPlayerScripts.ToList(); list.RemoveAll((PlayerControllerB player) => (Object)(object)player == (Object)null || !((Behaviour)player).isActiveAndEnabled || player.isPlayerDead || PlayerExtensions.IsLocalClient(player)); for (int i = 0; i < list.Count / 2; i++) { int index = Random.RandomRangeInt(0, list.Count); SpawnBananaPeelRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)list[index])); list.RemoveAt(index); } } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnBananaPeelRpc(NetworkBehaviourReference playerReference) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: 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_0195: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3282497943u, val2, val, (SendTo)2, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref playerReference, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 3282497943u, val2, val, (SendTo)2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val4 = default(PlayerControllerB); if (BananaPeels.BananaPeelOutside != null && !((Object)(object)BananaPeels.BananaPeelOutside.spawnableObject == (Object)null) && !((Object)(object)BananaPeels.BananaPeelOutside.spawnableObject.prefabToSpawn == (Object)null) && ((NetworkBehaviourReference)(ref playerReference)).TryGet(ref val4, (NetworkManager)null)) { GameObject prefabToSpawn = BananaPeels.BananaPeelOutside.spawnableObject.prefabToSpawn; Transform transform = ((Component)val4).transform; int num = Random.RandomRangeInt(8, 17); Vector3 val5 = default(Vector3); for (int i = 0; i < num; i++) { float num2 = MathF.PI * 2f / (float)num * (float)i; ((Vector3)(ref val5))..ctor(Mathf.Cos(num2), 0f, Mathf.Sin(num2)); Vector3 val6 = transform.position + val5 * Random.Range(1f, 5f); Quaternion val7 = Quaternion.FromToRotation(val6, transform.position); Object.Instantiate(prefabToSpawn, val6, val7, ((Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) ? RoundManager.Instance.mapPropsContainer.transform : null); } } } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(3282497943u, new RpcReceiveHandler(__rpc_handler_3282497943), "SpawnBananaPeelRpc"); base.__initializeRpcs(); } private static void __rpc_handler_3282497943(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference playerReference = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref playerReference, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BananaPeelDiceEffect)(object)target).SpawnBananaPeelRpc(playerReference); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "BananaPeelDiceEffect"; } } internal sealed class BonkDeliveryDiceEffect : NetworkedDiceEffect { private enum RotatorType { TWO_BAGS, BAG_UP, BAG_LOW } public override EffectType Outcome => (EffectType)1; public override bool ShowDefaultTooltip => false; public override string Name => "Bonk Delivery"; public override string Tooltip => "Watch your head!"; public override void Use() { if ((Object)(object)PlayZoneCompatibility.Rotator2BagsPrefab != (Object)null && (Object)(object)PlayZoneCompatibility.RotatorBagUpPrefab != (Object)null && (Object)(object)PlayZoneCompatibility.RotatorBagLowPrefab != (Object)null && (Object)(object)GameNetworkManager.Instance != (Object)null && (Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null) { SpawnRotatorRpc(GameNetworkManager.Instance.localPlayerController.isInsideFactory); } } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnRotatorRpc(bool spawnInside) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2129222629u, val2, val, (SendTo)2, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref spawnInside, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 2129222629u, val2, val, (SendTo)2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if ((Object)(object)PlayZoneCompatibility.Rotator2BagsPrefab == (Object)null || (Object)(object)PlayZoneCompatibility.RotatorBagUpPrefab == (Object)null || (Object)(object)PlayZoneCompatibility.RotatorBagLowPrefab == (Object)null || (Object)(object)RoundManager.Instance == (Object)null || (Object)(object)RoundManager.Instance.mapPropsContainer == (Object)null) { return; } GameObject[] array = (spawnInside ? RoundManager.Instance.insideAINodes : RoundManager.Instance.outsideAINodes); if (array == null || array.Length == 0) { return; } int num = Random.RandomRangeInt(1, 5); MeshRenderer val8 = default(MeshRenderer); for (int i = 0; i < num; i++) { int num2 = Random.RandomRangeInt(0, 3); if (!Enum.IsDefined(typeof(RotatorType), num2)) { continue; } NetworkObject val4 = (NetworkObject)((RotatorType)num2 switch { RotatorType.TWO_BAGS => PlayZoneCompatibility.Rotator2BagsPrefab, RotatorType.BAG_UP => PlayZoneCompatibility.RotatorBagUpPrefab, RotatorType.BAG_LOW => PlayZoneCompatibility.RotatorBagLowPrefab, _ => null, }); if ((Object)(object)val4 == (Object)null) { continue; } GameObject val5 = array[Random.RandomRangeInt(0, array.Length)]; if ((Object)(object)val5 == (Object)null) { break; } Vector3 position = val5.transform.position; NetworkObject component = Object.Instantiate(MysteryDice.AgentObjectPrefab, position, Quaternion.identity, RoundManager.Instance.mapPropsContainer.transform).GetComponent(); component.Spawn(true); NetworkObject component2 = Object.Instantiate(((Component)val4).gameObject, position, Quaternion.identity, RoundManager.Instance.mapPropsContainer.transform).GetComponent(); component2.Spawn(true); SmartAgentNavigator component3 = ((Component)component).gameObject.GetComponent(); MakeMove val6 = ((Component)component2).gameObject.AddComponent(); ((Component)component2).transform.SetParent(((Component)component).transform); ((Component)component2).transform.SetLocalPositionAndRotation(new Vector3(0f, 0.2f, 0f), Quaternion.identity); float num3 = Random.Range(0.65f, 1f); ((Component)component2).GetComponent().SyncSpeed(num3); CapsuleCollider[] componentsInChildren = ((Component)component2).GetComponentsInChildren(false); foreach (CapsuleCollider val7 in componentsInChildren) { if ((Object)(object)val7 != (Object)null && ((Component)val7).gameObject.layer == 8 && !((Component)val7).TryGetComponent(ref val8)) { ((Collider)val7).enabled = false; } } Object.Destroy((Object)(object)((Component)((Component)component2).transform.GetChild(0)).gameObject); Object.Destroy((Object)(object)((Component)((Component)component2).transform.GetChild(2)).gameObject); val6.Initialize(component3); ((Behaviour)val6).enabled = true; Networker.Instance.FreebirdTrapClientRPC(component.NetworkObjectId); } } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2129222629u, new RpcReceiveHandler(__rpc_handler_2129222629), "SpawnRotatorRpc"); base.__initializeRpcs(); } private static void __rpc_handler_2129222629(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool spawnInside = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref spawnInside, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BonkDeliveryDiceEffect)(object)target).SpawnRotatorRpc(spawnInside); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "BonkDeliveryDiceEffect"; } } internal sealed class CircusInTownDiceEffect : NetworkedDiceEffect { public override EffectType Outcome => (EffectType)2; public override bool ShowDefaultTooltip => false; public override string Name => "The circus is in town!"; public override string Tooltip => "The trees are dressed for the occasion... Are you?"; public override void Use() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) ForestGiantAI[] array = Object.FindObjectsByType((FindObjectsInactive)0, (FindObjectsSortMode)0); for (int i = 0; i < array.Length; i++) { SwitchForestGiantSkinRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)array[i])); } } [Rpc(/*Could not decode attribute arguments.*/)] private void SwitchForestGiantSkinRpc(NetworkBehaviourReference enemyReference) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2347895434u, val2, val, (SendTo)7, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref enemyReference, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 2347895434u, val2, val, (SendTo)7, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; ForestGiantAI enemy = default(ForestGiantAI); if (EnemySkinRegistryCompatibility.Enabled && ((NetworkBehaviourReference)(ref enemyReference)).TryGet(ref enemy, (NetworkManager)null)) { EnemySkinRegistryCompatibility.SwitchEnemySkin((EnemyAI)(object)enemy, "LethalMatt.Bozoros.ClownGiant"); } } } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2347895434u, new RpcReceiveHandler(__rpc_handler_2347895434), "SwitchForestGiantSkinRpc"); base.__initializeRpcs(); } private static void __rpc_handler_2347895434(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference enemyReference = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref enemyReference, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((CircusInTownDiceEffect)(object)target).SwitchForestGiantSkinRpc(enemyReference); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "CircusInTownDiceEffect"; } } internal sealed class FishTouchDiceEffect : NetworkedDiceEffect { [CompilerGenerated] private sealed class d__14 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public NetworkBehaviourReference playerReference; public NetworkBehaviourReference trackerReference; private PlayerTracker 5__2; private PlayerControllerB 5__3; private float 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__14(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; 5__3 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (!((NetworkBehaviourReference)(ref playerReference)).TryGet(ref 5__3, (NetworkManager)null)) { return false; } 5__4 = Time.realtimeSinceStartup; goto IL_0065; case 1: <>1__state = -1; goto IL_0065; case 2: { <>1__state = -1; ((PlayerAttachable)5__2).AttachPlayer(5__3); return false; } IL_0065: if (!((NetworkBehaviourReference)(ref trackerReference)).TryGet(ref 5__2, (NetworkManager)null) && Time.realtimeSinceStartup - 5__4 < 8f) { <>2__current = Yielders.WaitForSeconds(0.03f); <>1__state = 1; return true; } <>2__current = null; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static GameObject? FishTouchPrefab { get; internal set; } public override EffectType Outcome => (EffectType)2; public override bool ShowDefaultTooltip => false; public override string Name => "Fish Touch"; public override string Tooltip => "You've got the Fish Touch! Pass it to a crewmate!"; public override void Use() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) SummonFishRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)GameNetworkManager.Instance.localPlayerController)); } [Rpc(/*Could not decode attribute arguments.*/)] private void SummonFishRpc(NetworkBehaviourReference playerReference) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(876923144u, val2, val, (SendTo)2, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref playerReference, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 876923144u, val2, val, (SendTo)2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val4 = default(PlayerControllerB); if ((Object)(object)FishTouchPrefab == (Object)null || !((NetworkBehaviourReference)(ref playerReference)).TryGet(ref val4, (NetworkManager)null)) { return; } Transform transform = ((Component)val4).transform; Transform val5 = (((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) ? RoundManager.Instance.mapPropsContainer.transform : null); NetworkObject val6 = default(NetworkObject); if (Object.Instantiate(FishTouchPrefab, transform.position, transform.rotation, val5).TryGetComponent(ref val6)) { val6.Spawn(true); PlayerTracker componentInChildren = ((Component)val6).GetComponentInChildren(false); if ((Object)(object)componentInChildren != (Object)null) { ((MonoBehaviour)this).StartCoroutine(AttachPlayerDelayed(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)componentInChildren), NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)val4))); } } } [IteratorStateMachine(typeof(d__14))] private static IEnumerator AttachPlayerDelayed(NetworkBehaviourReference trackerReference, NetworkBehaviourReference playerReference) { //IL_0007: 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) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__14(0) { trackerReference = trackerReference, playerReference = playerReference }; } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(876923144u, new RpcReceiveHandler(__rpc_handler_876923144), "SummonFishRpc"); base.__initializeRpcs(); } private static void __rpc_handler_876923144(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference playerReference = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref playerReference, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((FishTouchDiceEffect)(object)target).SummonFishRpc(playerReference); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "FishTouchDiceEffect"; } } public abstract class NetworkedDiceEffect : NetworkBehaviour, IEffect { public abstract EffectType Outcome { get; } public abstract bool ShowDefaultTooltip { get; } public abstract string Name { get; } public abstract string Tooltip { get; } public abstract void Use(); public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); MysteryDice.RegisterNewEffect((IEffect)(object)this, false, false); } public override void OnNetworkDespawn() { //IL_0025: 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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected I4, but got Unknown DieBehaviour.AllEffects.Remove((IEffect)(object)this); DieBehaviour.CompleteEffects.Remove((IEffect)(object)this); DieBehaviour.AllowedEffects.Remove((IEffect)(object)this); EffectType outcome = Outcome; switch ((int)outcome) { case 0: DieBehaviour.AwfulEffects.Remove((IEffect)(object)this); break; case 1: DieBehaviour.BadEffects.Remove((IEffect)(object)this); break; case 2: DieBehaviour.MixedEffects.Remove((IEffect)(object)this); break; case 3: DieBehaviour.GoodEffects.Remove((IEffect)(object)this); break; case 4: DieBehaviour.GreatEffects.Remove((IEffect)(object)this); break; } ((NetworkBehaviour)this).OnNetworkDespawn(); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } protected internal override string __getTypeName() { return "NetworkedDiceEffect"; } } internal sealed class PufferInfestationDiceEffect : NetworkedDiceEffect { [CompilerGenerated] private static EnemyType? k__BackingField; public static EnemyType? PufferEnemyType { get { if ((Object)(object)k__BackingField == (Object)null) { PufferEnemyType = OriginalContent.Enemies.Find((EnemyType enemy) => StringExtensions.CompareOrdinal(enemy.enemyName, "Puffer")); } return k__BackingField; } [CompilerGenerated] private set { k__BackingField = value; } } public override EffectType Outcome => (EffectType)1; public override bool ShowDefaultTooltip => false; public override string Name => "Spore Swarm"; public override string Tooltip => "Puffer infestation!"; public override void Use() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) Transform transform = ((Component)GameNetworkManager.Instance.localPlayerController).transform; int num = Random.RandomRangeInt(4, 7); Vector3 val = default(Vector3); for (int i = 0; i < num; i++) { float num2 = MathF.PI * 2f / (float)num * (float)i; ((Vector3)(ref val))..ctor(Mathf.Cos(num2), 0f, Mathf.Sin(num2)); Vector3 spawnPosition = transform.position + val * Random.Range(5f, 10f); SpawnPufferServerRpc(spawnPosition); } } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnPufferServerRpc(Vector3 spawnPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2884672709u, val2, val, (SendTo)2, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref spawnPosition); ((NetworkBehaviour)this).__endSendRpc(ref val3, 2884672709u, val2, val, (SendTo)2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if ((Object)(object)PufferEnemyType == (Object)null || (Object)(object)PufferEnemyType.enemyPrefab == (Object)null) { return; } NetworkObject componentInChildren = Object.Instantiate(PufferEnemyType.enemyPrefab, spawnPosition, Quaternion.identity).GetComponentInChildren(); if ((Object)(object)componentInChildren == (Object)null) { return; } componentInChildren.Spawn(true); PufferAI val4 = default(PufferAI); if (((Component)componentInChildren).TryGetComponent(ref val4)) { if ((Object)(object)RoundManager.Instance != (Object)null && RoundManager.Instance.SpawnedEnemies != null) { RoundManager.Instance.SpawnedEnemies.Add((EnemyAI)(object)val4); } SpawnPufferClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)val4)); } } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnPufferClientRpc(NetworkBehaviourReference enemyReference) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: 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_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = default(RpcAttributeParams); RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(2433991652u, val2, val, (SendTo)7, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref enemyReference, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 2433991652u, val2, val, (SendTo)7, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (EnemySkinRegistryCompatibility.Enabled) { ((MonoBehaviour)this).StartCoroutine(EnemySkinRegistryCompatibility.SwitchEnemySkinDelayed(enemyReference, "LethalMatt.Bozoros.GoofyPuffer")); } } } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2884672709u, new RpcReceiveHandler(__rpc_handler_2884672709), "SpawnPufferServerRpc"); ((NetworkBehaviour)this).__registerRpc(2433991652u, new RpcReceiveHandler(__rpc_handler_2433991652), "SpawnPufferClientRpc"); base.__initializeRpcs(); } private static void __rpc_handler_2884672709(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 spawnPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref spawnPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((PufferInfestationDiceEffect)(object)target).SpawnPufferServerRpc(spawnPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2433991652(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference enemyReference = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref enemyReference, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((PufferInfestationDiceEffect)(object)target).SpawnPufferClientRpc(enemyReference); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "PufferInfestationDiceEffect"; } } internal sealed class SantaVisitDiceEffect : NetworkedDiceEffect { [CompilerGenerated] private static EnemyType? k__BackingField; public static EnemyType? ButlerEnemyType { get { if ((Object)(object)k__BackingField == (Object)null) { ButlerEnemyType = OriginalContent.Enemies.Find((EnemyType enemy) => StringExtensions.CompareOrdinal(enemy.enemyName, "Butler")); } return k__BackingField; } [CompilerGenerated] private set { k__BackingField = value; } } public static GameObject? SantaGiftsPrefab { get; internal set; } public override EffectType Outcome => (EffectType)3; public override bool ShowDefaultTooltip => false; public override string Name => "Santa is here!"; public override string Tooltip => "Have you been good this year?"; public override void Use() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) SpawnButlerServerRpc(((Component)GameNetworkManager.Instance.localPlayerController).transform.position); } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnButlerServerRpc(Vector3 spawnPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = false }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(3405927006u, val2, val, (SendTo)2, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref spawnPosition); ((NetworkBehaviour)this).__endSendRpc(ref val3, 3405927006u, val2, val, (SendTo)2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; NetworkObject val4 = default(NetworkObject); if ((Object)(object)ButlerEnemyType == (Object)null || (Object)(object)ButlerEnemyType.enemyPrefab == (Object)null || !Object.Instantiate(ButlerEnemyType.enemyPrefab, spawnPosition, Quaternion.identity).TryGetComponent(ref val4)) { return; } val4.Spawn(true); ButlerEnemyAI val5 = default(ButlerEnemyAI); if (!((Component)val4).TryGetComponent(ref val5)) { return; } if ((Object)(object)RoundManager.Instance != (Object)null && RoundManager.Instance.SpawnedEnemies != null) { RoundManager.Instance.SpawnedEnemies.Add((EnemyAI)(object)val5); } SpawnButlerClientRpc(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)val5)); if (!((Object)(object)SantaGiftsPrefab == (Object)null)) { Transform val6 = (((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) ? RoundManager.Instance.mapPropsContainer.transform : null); NetworkObject val7 = default(NetworkObject); if (Object.Instantiate(SantaGiftsPrefab, spawnPosition, Quaternion.identity, val6).TryGetComponent(ref val7)) { val7.Spawn(true); } } } [Rpc(/*Could not decode attribute arguments.*/)] private void SpawnButlerClientRpc(NetworkBehaviourReference enemyReference) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1) { RpcAttributeParams val = new RpcAttributeParams { RequireOwnership = true }; RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(7196713u, val2, val, (SendTo)7, (RpcDelivery)0); ((FastBufferWriter)(ref val3)).WriteValueSafe(ref enemyReference, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendRpc(ref val3, 7196713u, val2, val, (SendTo)7, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (EnemySkinRegistryCompatibility.Enabled) { ((MonoBehaviour)this).StartCoroutine(EnemySkinRegistryCompatibility.SwitchEnemySkinDelayed(enemyReference, "LethalMatt.Bozoros.SantaButler")); } } } protected override void __initializeVariables() { base.__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(3405927006u, new RpcReceiveHandler(__rpc_handler_3405927006), "SpawnButlerServerRpc"); ((NetworkBehaviour)this).__registerRpc(7196713u, new RpcReceiveHandler(__rpc_handler_7196713), "SpawnButlerClientRpc"); base.__initializeRpcs(); } private static void __rpc_handler_3405927006(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 spawnPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref spawnPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SantaVisitDiceEffect)(object)target).SpawnButlerServerRpc(spawnPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_7196713(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference enemyReference = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref enemyReference, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SantaVisitDiceEffect)(object)target).SpawnButlerClientRpc(enemyReference); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string? __getTypeName() { return "SantaVisitDiceEffect"; } } } namespace Bozoros.Compatibility { [HarmonyPatch] internal sealed class EmergencyDiceCompatibility { private static bool? _enabled; public static bool Enabled { get { bool valueOrDefault = _enabled.GetValueOrDefault(); if (!_enabled.HasValue) { valueOrDefault = Chainloader.PluginInfos.ContainsKey("Theronguard.EmergencyDice"); _enabled = valueOrDefault; } return _enabled.Value; } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void RegisterDiceEffects() { if ((Object)(object)Plugin.BozorosBundle != (Object)null) { FishTouchDiceEffect.FishTouchPrefab = Plugin.BozorosBundle.LoadAsset("FishDiceRoll.prefab"); SantaVisitDiceEffect.SantaGiftsPrefab = Plugin.BozorosBundle.LoadAsset("SantaGifts.prefab"); } if ((Object)(object)PlayZoneCompatibility.PlayZoneExtendedMod != (Object)null) { PlayZoneCompatibility.ObtainRotatorPrefabs(); } if (!((Object)(object)MysteryDice.NetworkerPrefab != (Object)null)) { return; } MysteryDice.NetworkerPrefab.AddComponent(); MysteryDice.NetworkerPrefab.AddComponent(); if (EnemySkinRegistryCompatibility.Enabled) { if (EnemySkinRegistryCompatibility.SkinExists("LethalMatt.Bozoros.ClownGiant")) { MysteryDice.NetworkerPrefab.AddComponent(); } if (EnemySkinRegistryCompatibility.SkinExists("LethalMatt.Bozoros.GoofyPuffer")) { MysteryDice.NetworkerPrefab.AddComponent(); } if (EnemySkinRegistryCompatibility.SkinExists("LethalMatt.Bozoros.SantaButler")) { MysteryDice.NetworkerPrefab.AddComponent(); } } if ((Object)(object)PlayZoneCompatibility.Rotator2BagsPrefab != (Object)null && (Object)(object)PlayZoneCompatibility.RotatorBagUpPrefab != (Object)null && (Object)(object)PlayZoneCompatibility.RotatorBagLowPrefab != (Object)null && (Object)(object)MysteryDice.AgentObjectPrefab != (Object)null) { MysteryDice.NetworkerPrefab.AddComponent(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] [HarmonyPatch(typeof(Networker), "InstantiateSpecialPrefabForPlayer")] [HarmonyPrefix] private static void InstantiateGreed(PlayerControllerB player) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0045: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) if (!GameNetworkManager.Instance.disableSteam && player.playerSteamId == 76561198072744265L) { GameObject val = new GameObject("CustomPlayerScanNode"); val.transform.SetParent(((Component)player).transform); val.transform.SetLocalPositionAndRotation(((Component)player).transform.position + new Vector3(0f, 2.5f, 0f), Quaternion.identity); } } } internal sealed class EnemySkinRegistryCompatibility { [CompilerGenerated] private sealed class d__11 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public NetworkBehaviourReference enemyReference; public string skin; private EnemyAI 5__2; private float 5__3; object? IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object? IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__3 = Time.realtimeSinceStartup; goto IL_004f; case 1: <>1__state = -1; goto IL_004f; case 2: { <>1__state = -1; SwitchEnemySkin(5__2, skin); return false; } IL_004f: if (!((NetworkBehaviourReference)(ref enemyReference)).TryGet(ref 5__2, (NetworkManager)null) && Time.realtimeSinceStartup - 5__3 < 8f) { <>2__current = Yielders.WaitForSeconds(0.03f); <>1__state = 1; return true; } <>2__current = Yielders.WaitForEndOfFrame; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static bool? _enabled; public static bool Enabled { get { bool valueOrDefault = _enabled.GetValueOrDefault(); if (!_enabled.HasValue) { valueOrDefault = Chainloader.PluginInfos.ContainsKey("antlershed.lethalcompany.enemyskinregistry"); _enabled = valueOrDefault; } return _enabled.Value; } } public static Texture2D? BozorosIcon { get; private set; } internal static void LoadSkins() { AssetBundleLoader.AddOnLethalBundleLoadedListener((Action)delegate(AssetBundle assetBundle) { BozorosIcon = assetBundle.LoadAsset("BozorosIcon.png"); GoofyPuffer.GoofyPufferMaterial = assetBundle.LoadAsset("GoofyPufferMat.mat"); ClownGiant.ClownGiantMaterial = assetBundle.LoadAsset("ClownGiantMat.mat"); ClownGiant.ClownHair = assetBundle.LoadAsset("ClownHair.prefab"); ClownGiant.ClownNose = assetBundle.LoadAsset("ClownNose.prefab"); SantaButler.CandyCaneMesh = assetBundle.LoadAsset("Xmas_CandyCane_Knife.fbx"); SantaButler.CandyCaneMaterial = assetBundle.LoadAsset("CandyCaneMat.mat"); SantaButler.CandyCaneKnife = assetBundle.LoadAsset("CandyCaneKnife.prefab"); SantaButler.SantaMaterial = assetBundle.LoadAsset("Xmas_SantaMat.mat"); SantaButler.SantaHat = assetBundle.LoadAsset("Xmas_SantaHat.prefab"); SantaButler.GrinchHornetsTexture = assetBundle.LoadAsset("Xmas_GrinchHornets.png"); }, "bozoros.lethalbundle"); if (Plugin.Settings.GOOFY_PUFFER_NAMES.Value.Length > 0) { GoofyPuffer.GoofyPufferNames = Plugin.Settings.GOOFY_PUFFER_NAMES.Value.Split(',').ToList(); LoadPatch.OnFinishGeneratingLevelPost += delegate { GoofyPuffer.Random = new Random(StartOfRound.Instance.randomMapSeed + 1); }; } if (Plugin.Settings.CLOWN_GIANT_NAMES.Value.Length > 0) { ClownGiant.ClownGiantNames = Plugin.Settings.CLOWN_GIANT_NAMES.Value.Split(',').ToList(); LoadPatch.OnFinishGeneratingLevelPost += delegate { ClownGiant.Random = new Random(StartOfRound.Instance.randomMapSeed + 2); }; } if (Plugin.Settings.SANTA_BUTLER_NAMES.Value.Length > 0) { SantaButler.SantaButlerNames = Plugin.Settings.SANTA_BUTLER_NAMES.Value.Split(',').ToList(); LoadPatch.OnFinishGeneratingLevelPost += delegate { SantaButler.Random = new Random(StartOfRound.Instance.randomMapSeed + 3); }; } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void RegisterSkins() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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_00cb: Unknown result type (might be due to invalid IL or missing references) EnemySkinRegistry.RegisterSkin((Skin)(object)new GoofyPuffer(), (DefaultSkinConfigData?)new DefaultSkinConfigData((DefaultSkinConfigEntry[])(object)new DefaultSkinConfigEntry[2] { new DefaultSkinConfigEntry("circus", 1f), new DefaultSkinConfigEntry("fun", 1f) }, 0f, 0f)); EnemySkinRegistry.RegisterSkin((Skin)(object)new ClownGiant(), (DefaultSkinConfigData?)new DefaultSkinConfigData((DefaultSkinConfigEntry[])(object)new DefaultSkinConfigEntry[2] { new DefaultSkinConfigEntry("circus", 1f), new DefaultSkinConfigEntry("fun", 1f) }, 0f, 0f)); EnemySkinRegistry.RegisterSkin((Skin)(object)new SantaButler(), (DefaultSkinConfigData?)new DefaultSkinConfigData((DefaultSkinConfigEntry[])(object)new DefaultSkinConfigEntry[1] { new DefaultSkinConfigEntry("jolly", 1f) }, 0f, 0f)); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static bool SkinExists(string skin) { SkinRepository skins = EnemySkinRegistry.skins; return ((skins != null) ? skins.GetSkin(skin) : null) != null; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void SwitchEnemySkin(EnemyAI enemy, string skin) { EnemySkinRegistry.ReassignSkin(((Component)enemy).gameObject, skin); } [IteratorStateMachine(typeof(d__11))] internal static IEnumerator SwitchEnemySkinDelayed(NetworkBehaviourReference enemyReference, string skin) { //IL_0007: 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) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__11(0) { enemyReference = enemyReference, skin = skin }; } } internal sealed class LethalElementsCompatibility { private static bool? _enabled; public static bool Enabled { get { bool valueOrDefault = _enabled.GetValueOrDefault(); if (!_enabled.HasValue) { valueOrDefault = Chainloader.PluginInfos.ContainsKey("voxx.LethalElementsPlugin"); _enabled = valueOrDefault; } return _enabled.Value; } } internal static void RegisterSnozoros() { if ((Object)(object)Plugin.BozorosExtendedLevel == (Object)null) { return; } Plugin.BozorosExtendedLevel.LevelEvents.onLevelLoaded.AddListener((Action)delegate { //IL_0011: Unknown result type (might be due to invalid IL or missing references) SelectableLevel selectableLevel = Plugin.BozorosExtendedLevel.SelectableLevel; string text = $"{selectableLevel.currentWeather}"; if (text.Contains("Snowfall") || text.Contains("Blizzard")) { selectableLevel.levelIncludesSnowFootprints = true; } }); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void PoisonLake(QuicksandTrigger waterTrigger) { ((Component)waterTrigger).gameObject.AddComponent(); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void SubscribeToSnow(Action snowAction, bool unsubscribe = false) { if ((Object)(object)LevelManipulator.Instance != (Object)null) { if (!unsubscribe) { LevelManipulator.Instance.OnSnowReady += snowAction; } else { LevelManipulator.Instance.OnSnowReady -= snowAction; } } } } internal sealed class WesleyCompatibility { private static bool? _enabled; public static bool Enabled { get { bool valueOrDefault = _enabled.GetValueOrDefault(); if (!_enabled.HasValue) { valueOrDefault = Chainloader.PluginInfos.ContainsKey("JacobG5.WesleyMoonScripts"); _enabled = valueOrDefault; } return _enabled.Value; } } public static bool BananaMode { get; private set; } public static ExtendedLevel? AlcatrasExtendedLevel { get; private set; } public static ExtendedItem? HyveTape { get; private set; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void RegisterWesleyBozoIntegration() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown if (Plugin.Settings.WESLEY_INTEGRATION.Value) { ConfigEntry lockMoons = WesleyScripts.LockMoons; if (lockMoons != null && lockMoons.Value) { WesleyProgressionIntegration val = ScriptableObject.CreateInstance(); val.IntegratedLevels[0] = new WesleyIntegratedLevel { sceneName = "BozorosScene", planetName = "823 Bozoros", forceLock = true, moonUnlockerProtection = false }; ((JLLAddon)val).Init((JLLMod)null); } } if (CustomConfigRegistry.Mods.TryGetValue("MagicWesley.Alcatras", out var value) && value.GetBool("Banana launcher mode")) { BananaMode = true; } AssetBundleLoader.AddOnExtendedModLoadedListener((Action)delegate(ExtendedMod extendedMod) { //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Expected O, but got Unknown //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Expected O, but got Unknown if (Plugin.Settings.WESLEY_INTEGRATION.Value) { ConfigEntry lockMoons2 = WesleyScripts.LockMoons; if (lockMoons2 != null && lockMoons2.Value) { ExtendedItem val2 = extendedMod.ExtendedItems.Find((ExtendedItem item) => StringExtensions.CompareOrdinal(((Object)item).name, "CursedTapeExtendedItem")); LevelCassetteItem val3 = default(LevelCassetteItem); if ((Object)(object)val2 != (Object)null && val2.Item.spawnPrefab.TryGetComponent(ref val3) && StringExtensions.CompareOrdinal(val3.LevelSceneName, "Asteroid-13") && !val3.unlockLevel) { val3.LevelSceneName = "BozorosScene"; val3.unlockLevel = true; } } } if (!((Object)(object)Plugin.BozorosExtendedLevel == (Object)null)) { if (BananaMode && BananaPeels.BananaPeelOutside != null) { AlcatrasExtendedLevel = extendedMod.ExtendedLevels.Find((ExtendedLevel level) => StringExtensions.CompareOrdinal(((Object)level).name, "AlcatrasExtended")); if ((Object)(object)AlcatrasExtendedLevel != (Object)null) { BananaPeels.RegisterBananaLevel(AlcatrasExtendedLevel); } } if (Plugin.Settings.WESLEY_INJECT_SCRAPS.Value) { List spawnableScrap = Plugin.BozorosExtendedLevel.SelectableLevel.spawnableScrap; string[] tapes = new string[4] { "FilitriosTape", "OldredTape", "GloomTape", "SecretFiles" }; string[] sillyItems = new string[6] { "Biomonty", "Webley", "S1ck", "C4Explosive", "GenericApple", "Banana" }; int j; for (j = 0; j < tapes.Length; j++) { ExtendedItem val4 = extendedMod.ExtendedItems.Find((ExtendedItem item) => StringExtensions.CompareOrdinal(((Object)item).name, tapes[j] + "ExtendedItem")); if ((Object)(object)val4 == (Object)null || (Object)(object)val4.LevelMatchingProperties == (Object)null || val4.LevelMatchingProperties.planetNames.FindIndex((StringWithRarity entry) => StringExtensions.CompareOrdinal(entry.Name, "Bozoros")) != -1) { return; } val4.LevelMatchingProperties.planetNames.Add(new StringWithRarity("Bozoros", (j + 1) * (j + 2))); } int i; for (i = 0; i < sillyItems.Length; i++) { ExtendedItem val5 = extendedMod.ExtendedItems.Find((ExtendedItem item) => StringExtensions.CompareOrdinal(((Object)item).name, sillyItems[i] + "ExtendedItem")); if ((Object)(object)val5 == (Object)null || (Object)(object)val5.LevelMatchingProperties == (Object)null || val5.LevelMatchingProperties.planetNames.FindIndex((StringWithRarity entry) => StringExtensions.CompareOrdinal(entry.Name, "Bozoros")) != -1) { return; } val5.LevelMatchingProperties.planetNames.Add(new StringWithRarity("Bozoros", 5 + i * 2)); } } HyveTape = extendedMod.ExtendedItems.Find((ExtendedItem item) => StringExtensions.CompareOrdinal(((Object)item).name, "HyveTapeExtendedItem")); } }, "MagicWesley", "MagicWesleysMod"); } } } namespace Bozoros.Compatibility.Moons { internal sealed class PandoramusCompatibility { public static ExtendedLevel? PandoramusLevel { get; internal set; } public static Material? PortalCircusFacility { get; internal set; } internal static void RegisterCompat() { AssetBundleLoader.AddOnExtendedModLoadedListener((Action)delegate(ExtendedMod pandoramusExtended) { if (!((Object)(object)Plugin.BozorosBundle == (Object)null)) { PortalCircusFacility = Plugin.BozorosBundle.LoadAsset("Portal_CircusFacilityMat.mat"); int num = pandoramusExtended.ExtendedLevels.FindIndex((ExtendedLevel level) => StringExtensions.CompareOrdinal(((Object)level).name, "PandoramusExtended")); if (num != -1) { PandoramusLevel = pandoramusExtended.ExtendedLevels[num]; LoadPatch.OnFinishGeneratingNewLevelClientRpcPost += PortalSwitch; } } }, "DemonMae_PAN", "Pandoramus"); } private static void PortalSwitch() { if (!((Object)(object)PortalCircusFacility == (Object)null) && !((Object)(object)PandoramusLevel == (Object)null) && !((Object)(object)Plugin.CircusFacilityExtendedDungeon == (Object)null) && PandoramusLevel.IsCurrentLevel && Plugin.CircusFacilityExtendedDungeon.IsCurrentDungeon) { Transform val = (((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) ? RoundManager.Instance.mapPropsContainer.transform.GetParent().Find("PortalRing/PortalTexture") : null); MaterialScroller val2 = default(MaterialScroller); MeshRenderer val3 = default(MeshRenderer); if (!((Object)(object)val == (Object)null) && !((Component)val).TryGetComponent(ref val2) && ((Component)val).TryGetComponent(ref val3)) { MaterialScroller val4 = ((Component)val3).gameObject.AddComponent(); val4.scrollingMat = PortalCircusFacility; ((Renderer)val3).sharedMaterial = PortalCircusFacility; } } } } internal sealed class StarlancerZeroCompatibility { public static ExtendedLevel? StarlancerZeroLevel { get; internal set; } public static GameObject? CircusDoors { get; internal set; } internal static void RegisterCompat() { AssetBundleLoader.AddOnExtendedModLoadedListener((Action)delegate(ExtendedMod starlancerExtended) { if (!((Object)(object)Plugin.BozorosBundle == (Object)null)) { CircusDoors = Plugin.BozorosBundle.LoadAsset("MainEntranceOnlyDoor.prefab"); int num = starlancerExtended.ExtendedLevels.FindIndex((ExtendedLevel level) => StringExtensions.CompareOrdinal(((Object)level).name, "StarlancerZeroExtended")); if (num != -1) { StarlancerZeroLevel = starlancerExtended.ExtendedLevels[num]; LoadPatch.OnFinishGeneratingLevelPost += DoorSwitch; } } }, "AudioKnight", "StarlancerMoons"); } private static void DoorSwitch() { //IL_00ae: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)CircusDoors == (Object)null) && !((Object)(object)StarlancerZeroLevel == (Object)null) && !((Object)(object)Plugin.CircusFacilityExtendedDungeon == (Object)null) && StarlancerZeroLevel.IsCurrentLevel && Plugin.CircusFacilityExtendedDungeon.IsCurrentDungeon) { Transform val = (((Object)(object)RoundManager.Instance != (Object)null && (Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) ? RoundManager.Instance.mapPropsContainer.transform.GetParent().Find("Pyramid/Pyramid_Thin_Base/Desert_Pyramid_Medium/DoubleDoors") : null); if (!((Object)(object)val == (Object)null)) { Transform transform = Object.Instantiate(CircusDoors, ((Component)val).transform.GetParent()).transform; Transform transform2 = ((Component)transform).transform; transform2.localPosition += new Vector3(0f, 3f, -0.1f); ((Component)transform).transform.localScale = new Vector3(0.1323f, 2.9661f, 3.0816f); ((Component)val).gameObject.SetActive(false); } } } } } namespace Bozoros.Compatibility.Interiors { internal sealed class PlayZoneCompatibility { public static ExtendedMod? PlayZoneExtendedMod { get; internal set; } public static NetworkObject? Rotator2BagsPrefab { get; internal set; } public static NetworkObject? RotatorBagUpPrefab { get; internal set; } public static NetworkObject? RotatorBagLowPrefab { get; internal set; } internal static void ObtainRotatorPrefabs() { if (!((Object)(object)PlayZoneExtendedMod != (Object)null) || PlayZoneExtendedMod.ExtendedDungeonFlows.Count <= 0) { return; } ExtendedDungeonFlow val = PlayZoneExtendedMod.ExtendedDungeonFlows[0]; DungeonFlow dungeonFlow = val.DungeonFlow; if ((Object)(object)dungeonFlow == (Object)null || dungeonFlow.Lines == null || dungeonFlow.Lines.Count == 0) { return; } DungeonArchetype val2 = dungeonFlow.Lines[0]?.DungeonArchetypes[0]; if ((Object)(object)val2 == (Object)null || val2.TileSets == null || val2.TileSets.Count == 0) { return; } TileSet val3 = val2.TileSets[0]; if ((Object)(object)val3 == (Object)null || val3.TileWeights?.Weights == null || val3.TileWeights.Weights.Count < 4) { return; } GameObject val4 = val3.TileWeights.Weights[4]?.Value; if ((Object)(object)val4 == (Object)null) { return; } Transform val5 = val4.transform.Find("Nodes/Hazards/RotatorSpawn"); if (!((Object)(object)val5 == (Object)null) && val5.childCount >= 4) { SpawnSyncedObject val6 = default(SpawnSyncedObject); if (((Component)val5.GetChild(1)).TryGetComponent(ref val6) && (Object)(object)val6.spawnPrefab != (Object)null) { Rotator2BagsPrefab = val6.spawnPrefab.GetComponent(); } if (((Component)val5.GetChild(2)).TryGetComponent(ref val6) && (Object)(object)val6.spawnPrefab != (Object)null) { RotatorBagLowPrefab = val6.spawnPrefab.GetComponent(); } if (((Component)val5.GetChild(3)).TryGetComponent(ref val6) && (Object)(object)val6.spawnPrefab != (Object)null) { RotatorBagUpPrefab = val6.spawnPrefab.GetComponent(); } } } } } namespace Bozoros.Behaviours { public class ChangeSettings : NetworkBehaviour { [SerializeField] private AudioSource?[]? fireworkMusicVolume; [SerializeField] private AudioSource?[]? fireworkExplosionVolume; [SerializeField] private AudioSource?[]? announcerVolume; [SerializeField] private AudioSource?[]? tentMusicVolume; [SerializeField] private AudioSource?[]? dropshipVolume; [SerializeField] private ParticleSystem?[]? fireworkParticles; [SerializeField] private ParticleSystem?[]? confettiParticles; [SerializeField] private ParticleSystem?[]? balloonParticles; [SerializeField] private AudioClip? fireworkMusicCopyrighted; [SerializeField] private InteractPurchasable?[]? balloonStands; [SerializeField] private EntranceTeleport? ferrisWheelExit; [SerializeField] private ScanNodeProperties? shipScanNode; [SerializeField] private ItemDropship? dropship; [SerializeField] private ScanNodeProperties? dropshipScanNode; [SerializeField] private EnemySpawner? pufferSpawner; [SerializeField] private GameObject? barberSpawner; [SerializeField] private GameObject? voidheadSpawner; public static bool SeenBalloonInstructions { get; private set; } private void Awake() { AudioSource?[]? array = fireworkMusicVolume; if (array != null && array.Length != 0 && !Plugin.Settings.STREAMER_FRIENDLY.Value) { AudioSource val = fireworkMusicVolume[0]; if ((Object)(object)val != (Object)null) { val.clip = fireworkMusicCopyrighted; val.volume = 0.15f; } } ApplyVolume(Plugin.Settings.FIREWORK_MUSIC_VOLUME.Value, fireworkMusicVolume); ApplyVolume(Plugin.Settings.FIREWORK_EXPLOSION_VOLUME.Value, fireworkExplosionVolume); ApplyVolume(Plugin.Settings.ANNOUNCER_VOLUME.Value, announcerVolume); ApplyVolume(Plugin.Settings.TENT_MUSIC_VOLUME.Value, tentMusicVolume); ApplyVolume(Plugin.Settings.DROPSHIP_VOLUME.Value, dropshipVolume); ApplyParticleIntensity(Plugin.Settings.FIREWORK_PARTICLES.Value, fireworkParticles, firework: true); ApplyParticleIntensity(Plugin.Settings.CONFETTI_PARTICLES.Value, confettiParticles); ApplyParticleIntensity(Plugin.Settings.BALLOON_PARTICLES.Value, balloonParticles); PrefabSpawner val3 = default(PrefabSpawner); for (int i = 0; i < balloonStands?.Length; i++) { InteractPurchasable val2 = balloonStands[i]; if ((Object)(object)val2 == (Object)null || !((Component)val2).TryGetComponent(ref val3)) { continue; } int currentIndex = i; ((NetworkedSpawner)(object)val3).OnSpawnPerformed.AddListener((UnityAction)delegate(NetworkObject prefab) { AnimationParamSetter val4 = default(AnimationParamSetter); if (((Component)prefab).TryGetComponent(ref val4)) { val4.SetInt(currentIndex); } }); val2.price = Plugin.Settings.BALLOON_PRICE.Value; ((InteractTrigger)val2).hoverTip = ((InteractTrigger)val2).hoverTip.Replace("PRICE", $"{val2.price}"); if (SeenBalloonInstructions || !Plugin.Settings.BALLOON_INSTRUCTIONS.Value) { ((Notification)(ref val2.purchaseNotification)).SetNotificationSeen(); } } if ((Object)(object)shipScanNode != (Object)null && Plugin.Settings.MODIFY_SHIP_NODE.Value) { shipScanNode.headerText = "Clown Car"; } if ((Object)(object)dropship != (Object)null && (Object)(object)dropshipScanNode != (Object)null) { ((Component)dropshipScanNode).transform.SetParent(((Component)dropship).transform, false); ((Component)dropshipScanNode).gameObject.SetActive(true); } if ((Object)(object)pufferSpawner != (Object)null && !Plugin.Settings.EXTRA_PUFFER_SPAWNS.Value) { pufferSpawner.WeightedEntries = Array.Empty(); } if ((Object)(object)barberSpawner != (Object)null && !Plugin.Settings.FOGGY_BARBER_SPAWNS.Value) { barberSpawner.SetActive(false); } if ((Object)(object)voidheadSpawner != (Object)null && !Plugin.Settings.BLACK_FOG_VOIDHEAD_SPAWNS.Value) { voidheadSpawner.SetActive(false); } } public override void OnNetworkSpawn() { ((NetworkBehaviour)this).OnNetworkSpawn(); if (((NetworkBehaviour)this).IsHost && !Plugin.Settings.FERRIS_WHEEL_EXIT.Value) { DisableFerrisFireExitRpc(); } } private void OnDisable() { SoundManager.Instance.currentLevelAmbience = null; } [Rpc(/*Could not decode attribute arguments.*/)] private void DisableFerrisFireExitRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_00a5: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1) { RpcAttributeParams val = default(RpcAttributeParams); RpcParams val2 = default(RpcParams); FastBufferWriter val3 = ((NetworkBehaviour)this).__beginSendRpc(820069666u, val2, val, (SendTo)7, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendRpc(ref val3, 820069666u, val2, val, (SendTo)7, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1) { base.__rpc_exec_stage = (__RpcExecStage)0; if ((Object)(object)ferrisWheelExit != (Object)null) { ((Component)((Component)ferrisWheelExit).transform.GetParent()).gameObject.SetActive(false); } } } private static void ApplyVolume(float value, AudioSource?[]? audioSources) { for (int i = 0; i < audioSources?.Length; i++) { AudioSource val = audioSources[i]; if ((Object)(object)val != (Object)null) { val.volume *= value; } } } private static void ApplyParticleIntensity(float multiplier, ParticleSystem?[]? particleSystems, bool firework = false) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < particleSystems?.Length; i++) { ParticleSystem val = particleSystems[i]; if (!((Object)(object)val != (Object)null)) { continue; } EmissionModule emission = val.emission; ((EmissionModule)(ref emission)).rateOverTimeMultiplier = ((EmissionModule)(ref emission)).rateOverTimeMultiplier * multiplier; val.Emit(0); if (!firework) { break; } ParticleSystem[] componentsInChildren = ((Component)((Component)val).transform).GetComponentsInChildren(); foreach (ParticleSystem val2 in componentsInChildren) { MainModule main = val2.main; ((MainModule)(ref main)).maxParticles = (int)((float)((MainModule)(ref main)).maxParticles * multiplier); EmissionModule emission2 = val2.emission; ((EmissionModule)(ref emission2)).rateOverTimeMultiplier = ((EmissionModule)(ref emission2)).rateOverTimeMultiplier * multiplier; for (int k = 0; k < ((EmissionModule)(ref emission2)).burstCount; k++) { Burst burst = ((EmissionModule)(ref emission2)).GetBurst(k); ((Burst)(ref burst)).minCount = (short)((float)((Burst)(ref burst)).minCount * multiplier); ((Burst)(ref burst)).maxCount = (short)((float)((Burst)(ref burst)).maxCount * multiplier); } val2.Emit(0); } } } public void ToggleBalloonInstructions() { if (SeenBalloonInstructions) { return; } SeenBalloonInstructions = true; for (int i = 0; i < balloonStands?.Length; i++) { InteractPurchasable val = balloonStands[i]; if ((Object)(object)val != (Object)null) { ((Notification)(ref val.purchaseNotification)).SetNotificationSeen(); } } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(820069666u, new RpcReceiveHandler(__rpc_handler_820069666), "DisableFerrisFireExitRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_820069666(NetworkBehaviour? target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((ChangeSettings)(object)target).DisableFerrisFireExitRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string? __getTypeName() { return "ChangeSettings"; } } public class PlatformGravity : PlayerPhysicsRegion { [Header("Gravity Platform")] [Tooltip("")] public bool applyReducedMotion; private void Awake() { if (applyReducedMotion) { base.disablePhysicsRegion = true; } } public bool IsPhysicsRegionActive() { return !base.disablePhysicsRegion; } public static void CancelPlayerMomentum(PlayerControllerB player) { if (((NetworkBehaviour)player).IsOwner) { ((Component)player).transform.SetParent((Transform)null); } } } public class PoisonLake : MonoBehaviour { [Tooltip("")] public QuicksandTrigger? waterTrigger; private void Awake() { if (LethalElementsCompatibility.Enabled && (Object)(object)waterTrigger != (Object)null) { LethalElementsCompatibility.PoisonLake(waterTrigger); } } } public class ReduceMotionSickness : MonoBehaviour { [Header("Reduce Motion Sickness")] [Tooltip("")] public UnityEvent onReduceMotionSicknessEnabled = new UnityEvent(); [Tooltip("")] public UnityEvent onReduceMotionSicknessDisabled = new UnityEvent(); public void OnEnable() { if (Plugin.Settings.REDUCE_MOTION_SICKNESS.Value) { onReduceMotionSicknessEnabled.Invoke(); } Plugin.Settings.REDUCE_MOTION_SICKNESS.SettingChanged += OnReduceMotionSicknessChange; } public void OnDisable() { Plugin.Settings.REDUCE_MOTION_SICKNESS.SettingChanged -= OnReduceMotionSicknessChange; } public void OnReduceMotionSicknessChange(object sender, EventArgs args) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry val2) { if (val2.Value) { onReduceMotionSicknessEnabled.Invoke(); } else { onReduceMotionSicknessDisabled.Invoke(); } } } } public class SnozorosEnabler : MonoBehaviour { [Tooltip("")] public Material? fakeWaterMaterial; [Tooltip("")] public QuicksandTrigger? waterTrigger; [Tooltip("")] public MeshRenderer? waterRenderer; [Tooltip("")] public Material? snowMaterial; private void Awake() { if (LethalElementsCompatibility.Enabled) { LethalElementsCompatibility.SubscribeToSnow(HandleSnow); } } private void OnDestroy() { if (LethalElementsCompatibility.Enabled) { LethalElementsCompatibility.SubscribeToSnow(HandleSnow, unsubscribe: true); } SelectableLevel val = (((Object)(object)Plugin.BozorosExtendedLevel != (Object)null) ? Plugin.BozorosExtendedLevel.SelectableLevel : null); if (!((Object)(object)val != (Object)null)) { return; } SpawnableOutsideObjectWithRarity[] spawnableOutsideObjects = val.spawnableOutsideObjects; foreach (SpawnableOutsideObjectWithRarity val2 in spawnableOutsideObjects) { if ((Object)(object)val2.spawnableObject != (Object)null && ((Object)val2.spawnableObject).name.Contains("Snowman")) { val2.randomAmount = AnimationCurve.Constant(0f, 1f, 0f); } } val.levelIncludesSnowFootprints = false; } public void HandleSnow(bool isSnowReady) { //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_017f: 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) if ((Object)(object)((Component)this).transform.GetParent() == (Object)null || (Object)(object)((Component)this).transform.GetParent().GetParent() == (Object)null || (Object)(object)((Component)this).transform.GetParent().GetParent().GetParent() == (Object)null) { return; } Transform val = ((Component)this).transform.GetParent().GetParent().GetParent() .Find("MeshTerrain_BozorosTerrain"); MeshRenderer val2 = default(MeshRenderer); if (!((Object)(object)val != (Object)null) || !((Component)val).TryGetComponent(ref val2)) { return; } ((Renderer)val2).sharedMaterial = snowMaterial; ((Component)val).tag = "Snow"; if ((Object)(object)Plugin.BozorosExtendedLevel != (Object)null && $"{Plugin.BozorosExtendedLevel.SelectableLevel.currentWeather}".Contains("Snowfall") && (Object)(object)fakeWaterMaterial != (Object)null && (Object)(object)waterRenderer != (Object)null) { ((Renderer)waterRenderer).sharedMaterial = fakeWaterMaterial; MeshCollider val3 = default(MeshCollider); if (((Component)waterRenderer).TryGetComponent(ref val3)) { ((Collider)val3).enabled = false; } BoxCollider val4 = default(BoxCollider); if ((Object)(object)waterTrigger != (Object)null && ((Component)waterTrigger).TryGetComponent(ref val4)) { ((Collider)val4).enabled = true; ((Behaviour)waterTrigger).enabled = true; } ((Component)waterRenderer).transform.position = new Vector3(((Component)waterRenderer).transform.position.x, -3.75f, ((Component)waterRenderer).transform.position.z); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace Bozoros.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }