using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using PluginConfig.API; using PluginConfig.API.Decorators; using PluginConfig.API.Fields; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("fireworksforpranks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Fireworks for P ranks")] [assembly: AssemblyTitle("fireworksforpranks")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace fireworksforpranks { [BepInPlugin("com.yourname.pluginname", "Fireworks for P ranks", "1.0.0")] public class Plugin : BaseUnityPlugin { public static class ModConfig { public enum SpawnRanks { D, C, B, A, S, P } public enum FireworkMode { None, Randomcolors, TwoColored } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static BoolValueChangeEventDelegate <>9__37_0; internal void b__37_0(BoolValueChangeEvent e) { ((ConfigField)MusicVolume).interactable = e.value; ((ConfigField)EnableLoop).interactable = e.value; } } public static PluginConfigurator config; public static FloatField FireworkSpawnDelay; public static FloatField FireworkSimulationSpeed; public static FloatField FireworkSize; public static ColorField FireworkColorField; public static FloatField FireworkTransparency; public static EnumField SpawnRankField; public static EnumField FireworkSpecialMode; public static IntField FireworkVolume; public static BoolField EnableSecondaryColors; public static FloatField FireworkSecColorPos; public static ColorField FireworkSecColorField; public static FloatField FireworkSecTransparency; public static BoolField ThirdColorButton; public static FloatField FireworkThirdColorPos; public static ColorField FireworkThirdColorField; public static FloatField FireworkThirdTransparency; public static BoolField ForthColorButton; public static FloatField FireworkForthColorPos; public static ColorField FireworkForthColorField; public static FloatField FireworkForthTransparency; public static BoolField FifthColorButton; public static FloatField FireworkFifthColorPos; public static ColorField FireworkFifthColorField; public static FloatField FireworkFifthTransparency; public static BoolField EnableMusic; public static IntField MusicVolume; public static BoolField EnableLoop; public static FloatField Mode1Transparency; public static FloatField Mode2TransparencyF1; public static FloatField Mode2TransparencyF2; public static ColorField Mode2ColorFieldF1; public static ColorField Mode2ColorFieldF2; private static string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); public static bool IsRankValid(string rankText, SpawnRanks selectedRank) { string value = Regex.Replace(rankText, "<[^>]*>", "").Trim(); if (!Enum.TryParse(value, out var result)) { return false; } int num = (int)result; return num >= (int)selectedRank; } public static void Init() { //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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Expected O, but got Unknown //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Expected O, but got Unknown //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_02fc: Expected O, but got Unknown //IL_03e1: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Expected O, but got Unknown //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_044c: Expected O, but got Unknown //IL_046b: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Expected O, but got Unknown //IL_0494: Unknown result type (might be due to invalid IL or missing references) //IL_0499: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Expected O, but got Unknown //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Expected O, but got Unknown //IL_04dc: Unknown result type (might be due to invalid IL or missing references) //IL_04e6: Expected O, but got Unknown //IL_0526: Unknown result type (might be due to invalid IL or missing references) //IL_054b: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_055a: Expected O, but got Unknown //IL_0579: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Expected O, but got Unknown //IL_0590: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05b1: Expected O, but got Unknown //IL_05be: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Unknown result type (might be due to invalid IL or missing references) //IL_05da: Unknown result type (might be due to invalid IL or missing references) //IL_05e4: Expected O, but got Unknown //IL_060a: Unknown result type (might be due to invalid IL or missing references) //IL_062f: Unknown result type (might be due to invalid IL or missing references) //IL_0634: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Expected O, but got Unknown //IL_065d: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Expected O, but got Unknown //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_0690: Expected O, but got Unknown //IL_069d: Unknown result type (might be due to invalid IL or missing references) //IL_06a2: Unknown result type (might be due to invalid IL or missing references) //IL_06be: Unknown result type (might be due to invalid IL or missing references) //IL_06c8: Expected O, but got Unknown //IL_06d4: Unknown result type (might be due to invalid IL or missing references) //IL_06de: Expected O, but got Unknown //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_0729: Unknown result type (might be due to invalid IL or missing references) //IL_072e: Unknown result type (might be due to invalid IL or missing references) //IL_0738: Expected O, but got Unknown //IL_0757: Unknown result type (might be due to invalid IL or missing references) //IL_0761: Expected O, but got Unknown //IL_0780: Unknown result type (might be due to invalid IL or missing references) //IL_078a: Expected O, but got Unknown //IL_0797: Unknown result type (might be due to invalid IL or missing references) //IL_079c: Unknown result type (might be due to invalid IL or missing references) //IL_07b8: Unknown result type (might be due to invalid IL or missing references) //IL_07c2: Expected O, but got Unknown //IL_07ce: Unknown result type (might be due to invalid IL or missing references) //IL_07d8: Expected O, but got Unknown //IL_07fe: Unknown result type (might be due to invalid IL or missing references) //IL_0823: Unknown result type (might be due to invalid IL or missing references) //IL_0828: Unknown result type (might be due to invalid IL or missing references) //IL_0832: Expected O, but got Unknown //IL_0851: Unknown result type (might be due to invalid IL or missing references) //IL_085b: Expected O, but got Unknown //IL_087a: Unknown result type (might be due to invalid IL or missing references) //IL_0884: Expected O, but got Unknown //IL_0891: Unknown result type (might be due to invalid IL or missing references) //IL_0896: Unknown result type (might be due to invalid IL or missing references) //IL_08b2: Unknown result type (might be due to invalid IL or missing references) //IL_08bc: Expected O, but got Unknown //IL_08c8: Unknown result type (might be due to invalid IL or missing references) //IL_08d2: Expected O, but got Unknown //IL_08f8: Unknown result type (might be due to invalid IL or missing references) //IL_091d: Unknown result type (might be due to invalid IL or missing references) //IL_0922: Unknown result type (might be due to invalid IL or missing references) //IL_092c: Expected O, but got Unknown //IL_094b: Unknown result type (might be due to invalid IL or missing references) //IL_0955: Expected O, but got Unknown //IL_0974: Unknown result type (might be due to invalid IL or missing references) //IL_097e: Expected O, but got Unknown //IL_098a: Unknown result type (might be due to invalid IL or missing references) //IL_0994: Expected O, but got Unknown //IL_09a1: Unknown result type (might be due to invalid IL or missing references) //IL_09ab: Expected O, but got Unknown //IL_09b8: Unknown result type (might be due to invalid IL or missing references) //IL_09c2: Expected O, but got Unknown //IL_09cf: Unknown result type (might be due to invalid IL or missing references) //IL_09d9: Expected O, but got Unknown config = PluginConfigurator.Create("Fireworks for P Rank ", "ffpr"); string text = Path.Combine(directory, "icon.png"); if (File.Exists(text)) { config.SetIconWithURL("file://" + text); } new ConfigHeader(config.rootPanel, "Fireworks for P Rank Settings", 30).textColor = Color.yellow; new ConfigHeader(config.rootPanel, "Fireworks appear settings", 20); FireworkSpawnDelay = new FloatField(config.rootPanel, "Spawn delay(seconds)", "Spawn Delay", 1f, 0.1f, 999f); FireworkSimulationSpeed = new FloatField(config.rootPanel, "Firework speed", "Firework speed", 1f, 0.1f, 100f); FireworkSize = new FloatField(config.rootPanel, "Firework size", "firework size", 75f, 50f, 100f); FireworkVolume = new IntField(config.rootPanel, "Volume", "volume", 100, 0, 100); new ConfigHeader(config.rootPanel, "Fireworks spawn settings", 20); new ConfigHeader(config.rootPanel, "Min rank required for fireworks to appear", 15).textColor = Color.gray; SpawnRankField = new EnumField(config.rootPanel, "Rank check", "rankcheck", SpawnRanks.P); SpawnRankField.SetEnumDisplayName(SpawnRanks.P, "P rank"); SpawnRankField.SetEnumDisplayName(SpawnRanks.S, "S rank"); SpawnRankField.SetEnumDisplayName(SpawnRanks.A, "A rank"); SpawnRankField.SetEnumDisplayName(SpawnRanks.B, "B rank"); SpawnRankField.SetEnumDisplayName(SpawnRanks.C, "C rank"); SpawnRankField.SetEnumDisplayName(SpawnRanks.D, "D rank"); new ConfigHeader(config.rootPanel, "P rank Music", 24).textColor = Color.yellow; new ConfigHeader(config.rootPanel, "Music to be played during the fireworks", 15).textColor = Color.gray; new ConfigHeader(config.rootPanel, "Place your own .wav/.mp3/.ogg file in the mod folder to replace the music", 15).textColor = Color.gray; EnableMusic = new BoolField(config.rootPanel, "Music enabled?", "music enabled?", false); MusicVolume = new IntField(config.rootPanel, "Volume", "MusicVolume", 100, 0, 100); EnableLoop = new BoolField(config.rootPanel, "Enable loop", "enableloop", false); ((ConfigField)MusicVolume).interactable = EnableMusic.value; ((ConfigField)EnableLoop).interactable = EnableMusic.value; BoolField enableMusic = EnableMusic; object obj = <>c.<>9__37_0; if (obj == null) { BoolValueChangeEventDelegate val = delegate(BoolValueChangeEvent e) { ((ConfigField)MusicVolume).interactable = e.value; ((ConfigField)EnableLoop).interactable = e.value; }; <>c.<>9__37_0 = val; obj = (object)val; } enableMusic.onValueChange += (BoolValueChangeEventDelegate)obj; new ConfigHeader(config.rootPanel, "Fireworks color settings", 24).textColor = Color.yellow; FireworkSpecialMode = new EnumField(config.rootPanel, "Firework special mode", "fireworkspecialmode", FireworkMode.None); FireworkSpecialMode.SetEnumDisplayName(FireworkMode.None, "None"); FireworkSpecialMode.SetEnumDisplayName(FireworkMode.Randomcolors, "Random colors"); FireworkSpecialMode.SetEnumDisplayName(FireworkMode.TwoColored, "Two colored"); Mode1Transparency = new FloatField(config.rootPanel, "Opacity", "Mode1Opacity", 0f, 0f, 1f); if (FireworkSpecialMode.value == FireworkMode.Randomcolors) { ((ConfigField)Mode1Transparency).hidden = false; } else { ((ConfigField)Mode1Transparency).hidden = true; } ConfigDivision Mode2Section = new ConfigDivision(config.rootPanel, "mode2_panel"); if (FireworkSpecialMode.value == FireworkMode.TwoColored) { ((ConfigField)Mode2Section).hidden = false; } else { ((ConfigField)Mode2Section).hidden = true; } Mode2ColorFieldF1 = new ColorField((ConfigPanel)(object)Mode2Section, "Color 1", "mode2color1", new Color(1f, 1f, 1f)); Mode2TransparencyF1 = new FloatField((ConfigPanel)(object)Mode2Section, "Opacity 1", "mode2opacity1", 0f, 0f, 1f); Mode2ColorFieldF2 = new ColorField((ConfigPanel)(object)Mode2Section, "Color 2", "mode2color2", new Color(1f, 1f, 1f)); Mode2TransparencyF2 = new FloatField((ConfigPanel)(object)Mode2Section, "Opacity 2", "mode2opacity2", 0f, 0f, 1f); ConfigDivision mainColorSection = new ConfigDivision(config.rootPanel, "main_color_panel"); if (FireworkSpecialMode.value != FireworkMode.None) { ((ConfigField)mainColorSection).interactable = false; } else { ((ConfigField)mainColorSection).interactable = true; } new ConfigHeader((ConfigPanel)(object)mainColorSection, "Main color settings", 22); FireworkColorField = new ColorField((ConfigPanel)(object)mainColorSection, "Color", "fireworkscolor", new Color(1f, 1f, 1f)); FireworkTransparency = new FloatField((ConfigPanel)(object)mainColorSection, "Opacity", "fireworkstrans", 0f, 0f, 1f); new ConfigHeader((ConfigPanel)(object)mainColorSection, "Secondary colors settings", 22); EnableSecondaryColors = new BoolField((ConfigPanel)(object)mainColorSection, "Secondary colors enabled?", "Secondary colors enabled?", false); new ConfigHeader((ConfigPanel)(object)mainColorSection, "----------------------------------------------", 20).textColor = Color.gray; ConfigDivision secColorSection = new ConfigDivision((ConfigPanel)(object)mainColorSection, "second_color_panel"); ((ConfigField)secColorSection).hidden = !EnableSecondaryColors.value; new ConfigHeader((ConfigPanel)(object)secColorSection, "Сolor 2 settings", 20); FireworkSecColorField = new ColorField((ConfigPanel)(object)secColorSection, "Сolor 2", "fireworksseccolor", new Color(1f, 1f, 1f)); FireworkSecTransparency = new FloatField((ConfigPanel)(object)secColorSection, "Opacity 2", "fireworkssectrans", 0f, 0f, 1f); FireworkSecColorPos = new FloatField((ConfigPanel)(object)secColorSection, "Color 2 position (0 = start, 1 = end)", "fireworksseccolorpos", 1f, 0f, 1f); new ConfigHeader((ConfigPanel)(object)secColorSection, "----------------------------------------------", 20).textColor = Color.gray; ThirdColorButton = new BoolField((ConfigPanel)(object)secColorSection, "Сolor 3 enabled?", "3colorenabled", false); ConfigDivision thirdColorSection = new ConfigDivision((ConfigPanel)(object)secColorSection, "third_color_panel"); ((ConfigField)thirdColorSection).hidden = !ThirdColorButton.value; new ConfigHeader((ConfigPanel)(object)thirdColorSection, "Сolor 3 settings", 20); FireworkThirdColorField = new ColorField((ConfigPanel)(object)thirdColorSection, "Color 3", "fireworksthirdcolor", new Color(1f, 1f, 1f)); FireworkThirdTransparency = new FloatField((ConfigPanel)(object)thirdColorSection, "Opacity 3", "fireworksthirdtrans", 0f, 0f, 1f); FireworkThirdColorPos = new FloatField((ConfigPanel)(object)thirdColorSection, "Color 3 position (0 = start, 1 = end)", "fireworksthirdcolorpos", 0.75f, 0f, 1f); new ConfigHeader((ConfigPanel)(object)thirdColorSection, "----------------------------------------------", 20).textColor = Color.gray; ForthColorButton = new BoolField((ConfigPanel)(object)thirdColorSection, "Сolor 4 enabled?", "4colorenabled", false); ConfigDivision forthColorSection = new ConfigDivision((ConfigPanel)(object)thirdColorSection, "forth_color_panel"); ((ConfigField)forthColorSection).hidden = !ForthColorButton.value; new ConfigHeader((ConfigPanel)(object)forthColorSection, "Сolor 4 settings", 20); FireworkForthColorField = new ColorField((ConfigPanel)(object)forthColorSection, "Color 4", "fireworksforthcolor", new Color(1f, 1f, 1f)); FireworkForthTransparency = new FloatField((ConfigPanel)(object)forthColorSection, "Opacity 4", "fireworksforthtrans", 0f, 0f, 1f); FireworkForthColorPos = new FloatField((ConfigPanel)(object)forthColorSection, "Color 4 position (0 = start, 1 = end)", "fireworksforthcolorpos", 0.5f, 0f, 1f); new ConfigHeader((ConfigPanel)(object)forthColorSection, "----------------------------------------------", 20).textColor = Color.gray; FifthColorButton = new BoolField((ConfigPanel)(object)forthColorSection, "Сolor 5 enabled?", "5colorenabled", false); ConfigDivision fifthColorSection = new ConfigDivision((ConfigPanel)(object)forthColorSection, "fifth_color_panel"); ((ConfigField)fifthColorSection).hidden = !FifthColorButton.value; new ConfigHeader((ConfigPanel)(object)fifthColorSection, "Сolor 5 settings", 20); FireworkFifthColorField = new ColorField((ConfigPanel)(object)fifthColorSection, "Color 5", "fireworksfifthcolor", new Color(1f, 1f, 1f)); FireworkFifthTransparency = new FloatField((ConfigPanel)(object)fifthColorSection, "Opacity 5", "fireworksfifthtrans", 0f, 0f, 1f); FireworkFifthColorPos = new FloatField((ConfigPanel)(object)fifthColorSection, "Color 5 position (0 = start, 1 = end)", "fireworksfifthcolorpos", 0.25f, 0f, 1f); EnableSecondaryColors.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)secColorSection).hidden = !e.value; if (!EnableSecondaryColors.value) { ThirdColorButton.value = !e.value; ((ConfigField)thirdColorSection).hidden = true; } }; ThirdColorButton.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)thirdColorSection).hidden = !e.value; if (!ThirdColorButton.value) { ForthColorButton.value = !e.value; ((ConfigField)forthColorSection).hidden = true; } }; ForthColorButton.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)forthColorSection).hidden = !e.value; if (!ForthColorButton.value) { FifthColorButton.value = !e.value; ((ConfigField)fifthColorSection).hidden = true; } }; FifthColorButton.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)fifthColorSection).hidden = !e.value; }; FireworkSpecialMode.onValueChange += delegate(EnumValueChangeEvent e) { if (e.value != FireworkMode.None) { ((ConfigField)mainColorSection).interactable = false; } else { ((ConfigField)mainColorSection).interactable = true; } if (e.value == FireworkMode.Randomcolors) { ((ConfigField)Mode1Transparency).hidden = false; } else { ((ConfigField)Mode1Transparency).hidden = true; } if (e.value == FireworkMode.TwoColored) { ((ConfigField)Mode2Section).hidden = false; } else { ((ConfigField)Mode2Section).hidden = true; } }; } } [HarmonyPatch(typeof(FinalRank), "SetRank")] public class LoadFireworks { [HarmonyPrefix] private static void Prefix(FinalRank __instance, string rank) { if (ModConfig.IsRankValid(rank, ModConfig.SpawnRankField.value)) { Logger.LogInfo((object)"Fireworks!"); Camera main = Camera.main; if (ModConfig.EnableMusic.value) { PlayMusic(ModConfig.MusicVolume.value); } ((MonoBehaviour)__instance).StartCoroutine(SpawnFireworksWithDelay()); } } } private static GameObject fireworksPrefab; private static AudioClip[] sounds; internal static ManualLogSource Logger { get; private set; } private void Awake() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"Plugin com.yourname.pluginname is loaded!"); Logger.LogInfo((object)"Mod started"); ((Object)((Component)this).gameObject).hideFlags = (HideFlags)4; ModConfig.Init(); LoadFireworksPrefab(); LoadSounds(); Harmony val = new Harmony("com.yourname.fireworksforprank"); val.PatchAll(typeof(LoadFireworks)); } private void LoadFireworksPrefab() { string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); string text = Path.Combine(directoryName, "fireworks.bundle"); if (File.Exists(text)) { Logger.LogInfo((object)"File was found!"); AssetBundle val = AssetBundle.LoadFromFile(text); if ((Object)(object)val == (Object)null) { Logger.LogError((object)"Prefab load error!"); return; } fireworksPrefab = val.LoadAsset("Fireworks"); if ((Object)(object)fireworksPrefab == (Object)null) { Logger.LogError((object)"Prefab was not found!"); } else { Logger.LogInfo((object)"Prefab loaded"); } } else { Logger.LogError((object)("File was not found: " + text)); } } private void LoadSounds() { string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); string path = Path.Combine(directoryName, "music"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string[] array = Directory.GetFiles(path, "*.wav").Concat(Directory.GetFiles(path, "*.mp3")).Concat(Directory.GetFiles(path, "*.ogg")) .ToArray(); if (array.Length != 0) { sounds = (AudioClip[])(object)new AudioClip[array.Length]; for (int i = 0; i < array.Length; i++) { ((MonoBehaviour)this).StartCoroutine(LoadClip(array[i], i)); } } } private IEnumerator LoadClip(string path, int i) { string ext = Path.GetExtension(path).ToLower(); AudioType audioType = (AudioType)((ext == ".mp3") ? 13 : ((ext == ".ogg") ? 14 : 20)); UnityWebRequest req = UnityWebRequestMultimedia.GetAudioClip("file://" + path, audioType); try { yield return req.SendWebRequest(); sounds[i] = DownloadHandlerAudioClip.GetContent(req); } finally { ((IDisposable)req)?.Dispose(); } } private static IEnumerator SpawnFireworksWithDelay() { int iColor = 0; while (true) { Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "Main Menu") { break; } SpawnFireworks(ref iColor); FloatField fireworkSpawnDelay = ModConfig.FireworkSpawnDelay; yield return (object)new WaitForSeconds((fireworkSpawnDelay != null) ? fireworkSpawnDelay.value : 1f); } } public static void SetLayerRecursively(GameObject obj, int newLayer) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown if ((Object)(object)obj == (Object)null) { return; } obj.layer = newLayer; foreach (Transform item in obj.transform) { Transform val = item; SetLayerRecursively(((Component)val).gameObject, newLayer); } } public static IEnumerator RainbowColorVar2(GameObject fireworks) { while (true) { Color randomColorV2 = Color.HSVToRGB(Random.Range(0f, 1f), 0.4f, 0.9f); ParticleSystem ps = fireworks.GetComponent(); MainModule main = ps.main; ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(randomColorV2); yield return (object)new WaitForSeconds(0.3f); Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "Main Menu") { break; } main = default(MainModule); } } private static void PlayMusic(int volume) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Canvas val = Object.FindObjectOfType(); GameObject val2 = new GameObject("FinalRankMusic"); val2.transform.SetParent(((Component)val).transform, false); AudioSource val3 = val2.AddComponent(); int num = Random.Range(0, sounds.Length); val3.clip = sounds[num]; val3.spatialBlend = 0f; val3.volume = (float)volume / 100f; if (ModConfig.EnableMusic.value) { val3.loop = true; } val3.Play(); } private static void SpawnFireworks(ref int iColor) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_07bf: Unknown result type (might be due to invalid IL or missing references) //IL_07c4: Unknown result type (might be due to invalid IL or missing references) //IL_07d6: Unknown result type (might be due to invalid IL or missing references) //IL_0681: Unknown result type (might be due to invalid IL or missing references) //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_068a: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_0699: Unknown result type (might be due to invalid IL or missing references) //IL_069e: Unknown result type (might be due to invalid IL or missing references) //IL_06a2: Unknown result type (might be due to invalid IL or missing references) //IL_06a7: Unknown result type (might be due to invalid IL or missing references) //IL_06c2: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Expected O, but got Unknown //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_015c: 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_0165: 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) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_088f: Unknown result type (might be due to invalid IL or missing references) //IL_0894: Unknown result type (might be due to invalid IL or missing references) //IL_0801: Unknown result type (might be due to invalid IL or missing references) //IL_0806: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0755: Unknown result type (might be due to invalid IL or missing references) //IL_075a: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_0770: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_0790: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_0711: Unknown result type (might be due to invalid IL or missing references) //IL_0716: Unknown result type (might be due to invalid IL or missing references) //IL_071a: Unknown result type (might be due to invalid IL or missing references) //IL_071f: Unknown result type (might be due to invalid IL or missing references) //IL_073a: Unknown result type (might be due to invalid IL or missing references) //IL_073c: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_0381: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03c1: Unknown result type (might be due to invalid IL or missing references) //IL_03d0: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_041d: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_0448: Unknown result type (might be due to invalid IL or missing references) //IL_0469: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Unknown result type (might be due to invalid IL or missing references) //IL_047d: Unknown result type (might be due to invalid IL or missing references) //IL_0642: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04bb: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_04db: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_0500: Unknown result type (might be due to invalid IL or missing references) //IL_0522: Unknown result type (might be due to invalid IL or missing references) //IL_0527: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_056e: Unknown result type (might be due to invalid IL or missing references) //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_0582: Unknown result type (might be due to invalid IL or missing references) //IL_05b6: Unknown result type (might be due to invalid IL or missing references) //IL_05c0: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_05d1: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Unknown result type (might be due to invalid IL or missing references) //IL_0607: Unknown result type (might be due to invalid IL or missing references) //IL_060c: Unknown result type (might be due to invalid IL or missing references) //IL_062d: Unknown result type (might be due to invalid IL or missing references) //IL_0632: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fireworksPrefab == (Object)null) { Logger.LogError((object)"preafab load fail"); return; } GameObject val = GameObject.Find("Player"); if ((Object)(object)val == (Object)null) { Logger.LogError((object)"plr not found"); return; } Camera main = Camera.main; GameObject val2 = Object.Instantiate(fireworksPrefab, ((Component)main).transform); float num = 45f - ModConfig.FireworkSize.value * 0.4f; val2.transform.localPosition = new Vector3(0f, -20f, num); val2.transform.localRotation = Quaternion.identity; SetLayerRecursively(val2, 13); AudioSource[] components = val2.GetComponents(); ParticleSystem component = val2.GetComponent(); if ((Object)(object)component != (Object)null) { MainModule main2 = component.main; ((Component)component).transform.localRotation = Quaternion.Euler(-90f, 0f, 0f); ((MainModule)(ref main2)).simulationSpeed = ModConfig.FireworkSimulationSpeed.value; MinMaxGradient startColor; if (ModConfig.FireworkSpecialMode.value == ModConfig.FireworkMode.None) { if (!ModConfig.EnableSecondaryColors.value) { ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(ModConfig.FireworkColorField.value); startColor = ((MainModule)(ref main2)).startColor; Color color = ((MinMaxGradient)(ref startColor)).color; color.a = 1f - ModConfig.FireworkTransparency.value; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(color); } else { ColorOverLifetimeModule colorOverLifetime = component.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled = true; Gradient val3 = new Gradient(); if (ModConfig.FifthColorButton.value) { val3.SetKeys((GradientColorKey[])(object)new GradientColorKey[5] { new GradientColorKey(ModConfig.FireworkColorField.value, 0f), new GradientColorKey(ModConfig.FireworkSecColorField.value, ModConfig.FireworkSecColorPos.value), new GradientColorKey(ModConfig.FireworkThirdColorField.value, ModConfig.FireworkThirdColorPos.value), new GradientColorKey(ModConfig.FireworkForthColorField.value, ModConfig.FireworkForthColorPos.value), new GradientColorKey(ModConfig.FireworkFifthColorField.value, ModConfig.FireworkFifthColorPos.value) }, (GradientAlphaKey[])(object)new GradientAlphaKey[5] { new GradientAlphaKey(1f - ModConfig.FireworkTransparency.value, 0f), new GradientAlphaKey(1f - ModConfig.FireworkSecTransparency.value, ModConfig.FireworkSecColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkThirdTransparency.value, ModConfig.FireworkThirdColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkForthTransparency.value, ModConfig.FireworkForthColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkFifthTransparency.value, ModConfig.FireworkFifthColorPos.value) }); ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val3); } else if (ModConfig.ForthColorButton.value) { val3.SetKeys((GradientColorKey[])(object)new GradientColorKey[4] { new GradientColorKey(ModConfig.FireworkColorField.value, 0f), new GradientColorKey(ModConfig.FireworkSecColorField.value, ModConfig.FireworkSecColorPos.value), new GradientColorKey(ModConfig.FireworkThirdColorField.value, ModConfig.FireworkThirdColorPos.value), new GradientColorKey(ModConfig.FireworkForthColorField.value, ModConfig.FireworkForthColorPos.value) }, (GradientAlphaKey[])(object)new GradientAlphaKey[4] { new GradientAlphaKey(1f - ModConfig.FireworkTransparency.value, 0f), new GradientAlphaKey(1f - ModConfig.FireworkSecTransparency.value, ModConfig.FireworkSecColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkThirdTransparency.value, ModConfig.FireworkThirdColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkForthTransparency.value, ModConfig.FireworkForthColorPos.value) }); ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val3); } else if (ModConfig.ThirdColorButton.value) { val3.SetKeys((GradientColorKey[])(object)new GradientColorKey[3] { new GradientColorKey(ModConfig.FireworkColorField.value, 0f), new GradientColorKey(ModConfig.FireworkSecColorField.value, ModConfig.FireworkSecColorPos.value), new GradientColorKey(ModConfig.FireworkThirdColorField.value, ModConfig.FireworkThirdColorPos.value) }, (GradientAlphaKey[])(object)new GradientAlphaKey[3] { new GradientAlphaKey(1f - ModConfig.FireworkTransparency.value, 0f), new GradientAlphaKey(1f - ModConfig.FireworkSecTransparency.value, ModConfig.FireworkSecColorPos.value), new GradientAlphaKey(1f - ModConfig.FireworkThirdTransparency.value, ModConfig.FireworkThirdColorPos.value) }); ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val3); } else if (ModConfig.EnableSecondaryColors.value) { val3.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(ModConfig.FireworkColorField.value, 0f), new GradientColorKey(ModConfig.FireworkSecColorField.value, ModConfig.FireworkSecColorPos.value) }, (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(1f - ModConfig.FireworkTransparency.value, 0f), new GradientAlphaKey(1f - ModConfig.FireworkSecTransparency.value, ModConfig.FireworkSecColorPos.value) }); } ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val3); } } else if (ModConfig.FireworkSpecialMode.value == ModConfig.FireworkMode.Randomcolors) { Color val4 = Color.HSVToRGB(Random.Range(0f, 1f), 1f, 1f); ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(val4); startColor = ((MainModule)(ref main2)).startColor; Color color2 = ((MinMaxGradient)(ref startColor)).color; color2.a = 1f - ModConfig.Mode1Transparency.value; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(color2); } else if (ModConfig.FireworkSpecialMode.value == ModConfig.FireworkMode.TwoColored) { if (iColor == 0) { ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(ModConfig.Mode2ColorFieldF1.value); startColor = ((MainModule)(ref main2)).startColor; Color color3 = ((MinMaxGradient)(ref startColor)).color; color3.a = 1f - ModConfig.Mode2TransparencyF1.value; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(color3); iColor = 1; } else { ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(ModConfig.Mode2ColorFieldF2.value); startColor = ((MainModule)(ref main2)).startColor; Color color4 = ((MinMaxGradient)(ref startColor)).color; color4.a = 1f - ModConfig.Mode2TransparencyF2.value; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(color4); iColor = 0; } } } ParticleSystem[] componentsInChildren = val2.GetComponentsInChildren(); ParticleSystem[] array = componentsInChildren; foreach (ParticleSystem val5 in array) { MainModule main3 = val5.main; ((MainModule)(ref main3)).simulationSpace = (ParticleSystemSimulationSpace)0; ((MainModule)(ref main3)).gravityModifier = MinMaxCurve.op_Implicit(0f); } if ((Object)(object)component != (Object)null) { MainModule main4 = component.main; component.Play(); int num2 = Random.Range(0, components.Length); components[num2].volume = ModConfig.FireworkVolume.value; components[num2].pitch = Random.Range(0.8f, 1.35f); components[num2].PlayDelayed(1.2f); } Object.Destroy((Object)(object)val2, 5f); Logger.LogInfo((object)("name: " + ((Object)val2).name)); ManualLogSource logger = Logger; Scene scene = val2.scene; logger.LogInfo((object)("Scene: " + ((Scene)(ref scene)).name)); } } internal static class MyPluginInfo { public const string PLUGIN_GUID = "com.yourname.pluginname"; public const string PLUGIN_NAME = "Fireworks for P ranks"; public const string PLUGIN_VERSION = "1.0.0"; } }