Decompiled source of ColorfulJarOfPickles v1.0.6

ColorfulJarOfPickles.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using ColorfulJarOfPickles.Utils;
using LethalConfig;
using LethalConfig.ConfigItems;
using LethalConfig.ConfigItems.Options;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using StaticNetcodeLib;
using Unity.Netcode;
using UnityEngine;

[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("ColorfulJarOfPickles")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("ColorfulJarOfPickles")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+0802eb453fa59697408fd622679c7bead25f07fe")]
[assembly: AssemblyProduct("ColorfulJarOfPickles")]
[assembly: AssemblyTitle("ColorfulJarOfPickles")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ColorfulJarOfPickles
{
	[BepInPlugin("wexop.colorful_jar_of_pickles", "ColorfulJarOfPickles", "1.0.6")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ColorfulJarOfPicklesPlugin : BaseUnityPlugin
	{
		private const string GUID = "wexop.colorful_jar_of_pickles";

		private const string NAME = "ColorfulJarOfPickles";

		private const string VERSION = "1.0.6";

		public static ColorfulJarOfPicklesPlugin instance;

		public ConfigEntry<string> spawnMoonRarity;

		public ConfigEntry<string> bigJarSpawnMoonRarity;

		public ConfigEntry<string> smallJarSpawnMoonRarity;

		public ConfigEntry<string> longJarSpawnMoonRarity;

		public ConfigEntry<string> flatJarSpawnMoonRarity;

		public ConfigEntry<string> stackSmallJarSpawnMoonRarity;

		public ConfigEntry<string> roundJarSpawnMoonRarity;

		public ConfigEntry<string> caseOfPicklesRarity;

		public ConfigEntry<string> caseOfSmallPicklesRarity;

		public ConfigEntry<string> flaskPicklesRarity;

		public ConfigEntry<string> giantPicklesRarity;

		public ConfigEntry<string> dancingPicklesRarity;

		public ConfigEntry<string> rainbowSmallJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowBigJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowSpawnMoonRarity;

		public ConfigEntry<string> rainbowLongJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowFlatJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowStackSmallJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowRoundJarSpawnMoonRarity;

		public ConfigEntry<string> rainbowCaseOfPicklesRarity;

		public ConfigEntry<string> rainbowCaseOfSmallPicklesRarity;

		public ConfigEntry<string> rainbowFlaskPicklesRarity;

		public ConfigEntry<string> rainbowGiantPicklesRarity;

		public ConfigEntry<string> rainbowDancingPicklesRarity;

		public ConfigEntry<float> dancingMusicVolume;

		private void Awake()
		{
			instance = this;
			((BaseUnityPlugin)this).Logger.LogInfo((object)"ColorfulJarOfPickles starting....");
			string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "colorfuljarofpickles");
			AssetBundle bundle = AssetBundle.LoadFromFile(text);
			((BaseUnityPlugin)this).Logger.LogInfo((object)"ColorfulJarOfPickles bundle found !");
			LoadConfigs();
			RegisterScrap(bundle);
			((BaseUnityPlugin)this).Logger.LogInfo((object)"ColorfulJarOfPickles is ready!");
		}

		private string RarityString(int rarity)
		{
			return $"Modded:{rarity},ExperimentationLevel:{rarity},AssuranceLevel:{rarity},VowLevel:{rarity},OffenseLevel:{rarity},MarchLevel:{rarity},RendLevel:{rarity},DineLevel:{rarity},TitanLevel:{rarity},Adamance:{rarity},Embrion:{rarity},Artifice:{rarity}";
		}

		private void LoadConfigs()
		{
			spawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "ScrapSpawnRarity", RarityString(40), "Chance for scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(spawnMoonRarity, requireRestart: true);
			bigJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "BigJarScrapSpawnRarity", RarityString(20), "Chance for big jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(bigJarSpawnMoonRarity, requireRestart: true);
			smallJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "SmallJarScrapSpawnRarity", RarityString(30), "Chance for small jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(smallJarSpawnMoonRarity, requireRestart: true);
			longJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "LongJarSpawnMoonRarity", RarityString(15), "Chance for long jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(longJarSpawnMoonRarity, requireRestart: true);
			flatJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "FlatJarSpawnMoonRarity", RarityString(15), "Chance for flat jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(flatJarSpawnMoonRarity, requireRestart: true);
			stackSmallJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "StackSmallJarSpawnMoonRarity", RarityString(15), "Chance for stack of jars scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(stackSmallJarSpawnMoonRarity, requireRestart: true);
			roundJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RoundJarSpawnMoonRarity", RarityString(30), "Chance for round jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(roundJarSpawnMoonRarity, requireRestart: true);
			caseOfPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "CaseOfPicklesRarity", RarityString(15), "Chance for case of pickles to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(caseOfPicklesRarity, requireRestart: true);
			caseOfSmallPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "CaseOfSmallPicklesRarity", RarityString(15), "Chance for case of small pickles to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(caseOfSmallPicklesRarity, requireRestart: true);
			flaskPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "FlaskPicklesRarity", RarityString(30), "Chance for pickles in flask scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(flaskPicklesRarity, requireRestart: true);
			giantPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "GiantPicklesRarity", RarityString(5), "Chance for giant jar of pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(giantPicklesRarity, requireRestart: true);
			dancingPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "DancingPicklesRarity", RarityString(10), "Chance for dancing pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(dancingPicklesRarity, requireRestart: true);
			rainbowSmallJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowSmallJarScrapSpawnRarity", RarityString(5), "Chance for rainbow small jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowSmallJarSpawnMoonRarity, requireRestart: true);
			rainbowBigJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowBigJarScrapSpawnRarity", RarityString(3), "Chance for rainbow big jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowBigJarSpawnMoonRarity, requireRestart: true);
			rainbowSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowScrapSpawnRarity", RarityString(5), "Chance for rainbow scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowSpawnMoonRarity, requireRestart: true);
			rainbowLongJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowLongJarSpawnMoonRarity", RarityString(3), "Chance for rainbow long jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowLongJarSpawnMoonRarity, requireRestart: true);
			rainbowFlatJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowFlatJarSpawnMoonRarity", RarityString(3), "Chance for rainbow flat jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowFlatJarSpawnMoonRarity, requireRestart: true);
			rainbowStackSmallJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowStackSmallJarSpawnMoonRarity", RarityString(3), "Chance for rainbow stack of jars scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowStackSmallJarSpawnMoonRarity, requireRestart: true);
			rainbowRoundJarSpawnMoonRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowRoundJarSpawnMoonRarity", RarityString(5), "Chance for rainbow round jar scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowRoundJarSpawnMoonRarity, requireRestart: true);
			rainbowCaseOfSmallPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowCaseOfSmallPicklesRarity", RarityString(3), "Chance for rainbow case of small pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowCaseOfSmallPicklesRarity, requireRestart: true);
			rainbowCaseOfPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowCaseOfPicklesRarity", RarityString(3), "Chance for rainbow case of pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowCaseOfPicklesRarity, requireRestart: true);
			rainbowFlaskPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowFlaskPicklesRarity", RarityString(5), "Chance for rainbow pickles in flask scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowFlaskPicklesRarity, requireRestart: true);
			rainbowGiantPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowGiantPicklesRarity", RarityString(1), "Chance for rainbow giant jar of pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowGiantPicklesRarity, requireRestart: true);
			rainbowDancingPicklesRarity = ((BaseUnityPlugin)this).Config.Bind<string>("General", "RainbowDancingPicklesRarity", RarityString(1), "Chance for rainbow giant jar of pickles scrap to spawn for any moon, example => assurance:100,offense:50 . You need to restart the game.");
			CreateStringConfig(rainbowDancingPicklesRarity, requireRestart: true);
			dancingMusicVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Sound", "DancingMusicVolume", 1f, "Dancing Pickles music volume. You don't need to restart the game.");
			CreateFloatConfig(dancingMusicVolume, 0f, 1f);
		}

		private void RegisterScrap(AssetBundle bundle)
		{
			Item val = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/ColorfulPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab);
			Utilities.FixMixerGroups(val.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(spawnMoonRarity.Value, val);
			Item val2 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val2).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val2.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab);
			Utilities.FixMixerGroups(val2.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowSpawnMoonRarity.Value, val2);
			Item val3 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/BigPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val3).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val3.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val3.spawnPrefab);
			Utilities.FixMixerGroups(val3.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(bigJarSpawnMoonRarity.Value, val3);
			Item val4 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/SmallPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val4).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val4.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val4.spawnPrefab);
			Utilities.FixMixerGroups(val4.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(smallJarSpawnMoonRarity.Value, val4);
			Item val5 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/LongColorfulPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val5).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val5.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val5.spawnPrefab);
			Utilities.FixMixerGroups(val5.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(longJarSpawnMoonRarity.Value, val5);
			Item val6 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/FlatPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val6).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val6.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val6.spawnPrefab);
			Utilities.FixMixerGroups(val6.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(flatJarSpawnMoonRarity.Value, val6);
			Item val7 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/StackSmallPickleJars.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val7).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val7.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val7.spawnPrefab);
			Utilities.FixMixerGroups(val7.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(stackSmallJarSpawnMoonRarity.Value, val7);
			Item val8 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/CaseOfPickles.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val8).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val8.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val8.spawnPrefab);
			Utilities.FixMixerGroups(val8.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(caseOfPicklesRarity.Value, val8);
			Item val9 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/CaseOfSmallPickles.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val9).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val9.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val9.spawnPrefab);
			Utilities.FixMixerGroups(val9.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(caseOfSmallPicklesRarity.Value, val9);
			Item val10 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RoundPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val10).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val10.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val10.spawnPrefab);
			Utilities.FixMixerGroups(val10.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(roundJarSpawnMoonRarity.Value, val10);
			Item val11 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/FlaskPickles.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val11).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val11.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val11.spawnPrefab);
			Utilities.FixMixerGroups(val11.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(flaskPicklesRarity.Value, val11);
			Item val12 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/ColorfulPickleJarGiant.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val12).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val12.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val12.spawnPrefab);
			Utilities.FixMixerGroups(val12.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(giantPicklesRarity.Value, val12);
			Item val13 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/DancingPickles.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val13).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val13.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val13.spawnPrefab);
			Utilities.FixMixerGroups(val13.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(dancingPicklesRarity.Value, val13);
			Item val14 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowSmallPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val14).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val14.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val14.spawnPrefab);
			Utilities.FixMixerGroups(val14.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowSmallJarSpawnMoonRarity.Value, val14);
			Item val15 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowBigPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val15).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val15.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val15.spawnPrefab);
			Utilities.FixMixerGroups(val15.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowBigJarSpawnMoonRarity.Value, val15);
			Item val16 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowLongColorfulPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val16).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val16.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val16.spawnPrefab);
			Utilities.FixMixerGroups(val16.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowLongJarSpawnMoonRarity.Value, val16);
			Item val17 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowFlatPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val17).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val17.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val17.spawnPrefab);
			Utilities.FixMixerGroups(val17.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowFlatJarSpawnMoonRarity.Value, val17);
			Item val18 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowStackSmallPickleJars.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val18).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val18.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val18.spawnPrefab);
			Utilities.FixMixerGroups(val18.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowStackSmallJarSpawnMoonRarity.Value, val18);
			Item val19 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/RainbowRoundPickleJar.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val19).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val19.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val19.spawnPrefab);
			Utilities.FixMixerGroups(val19.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowRoundJarSpawnMoonRarity.Value, val19);
			Item val20 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/CaseOfPicklesRainbow.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val20).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val20.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val20.spawnPrefab);
			Utilities.FixMixerGroups(val20.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowCaseOfPicklesRarity.Value, val20);
			Item val21 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/CaseOfSmallPicklesRainbow.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val21).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val21.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val21.spawnPrefab);
			Utilities.FixMixerGroups(val21.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowCaseOfSmallPicklesRarity.Value, val21);
			Item val22 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/FlaskPicklesRainbow.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val22).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val22.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val22.spawnPrefab);
			Utilities.FixMixerGroups(val22.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowFlaskPicklesRarity.Value, val22);
			Item val23 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/ColorfulPickleJarGiantRainbow.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val23).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val23.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val23.spawnPrefab);
			Utilities.FixMixerGroups(val23.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowGiantPicklesRarity.Value, val23);
			Item val24 = bundle.LoadAsset<Item>("Assets/LethalCompany/Mods/ColorfulJarOfPickles/DancingPicklesRainbow.asset");
			((BaseUnityPlugin)this).Logger.LogInfo((object)(((Object)val24).name + " FOUND"));
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"{val24.spawnPrefab} prefab");
			NetworkPrefabs.RegisterNetworkPrefab(val24.spawnPrefab);
			Utilities.FixMixerGroups(val24.spawnPrefab);
			RegisterUtil.RegisterScrapWithConfig(rainbowDancingPicklesRarity.Value, val24);
		}

		private void CreateFloatConfig(ConfigEntry<float> configEntry, float min = 0f, float max = 100f)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Expected O, but got Unknown
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			FloatSliderOptions val = new FloatSliderOptions();
			((BaseRangeOptions<float>)val).Min = min;
			((BaseRangeOptions<float>)val).Max = max;
			((BaseOptions)val).RequiresRestart = false;
			FloatSliderConfigItem val2 = new FloatSliderConfigItem(configEntry, val);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
		}

		private void CreateIntConfig(ConfigEntry<int> configEntry, int min = 0, int max = 100)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Expected O, but got Unknown
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			IntSliderOptions val = new IntSliderOptions();
			((BaseRangeOptions<int>)val).Min = min;
			((BaseRangeOptions<int>)val).Max = max;
			((BaseOptions)val).RequiresRestart = false;
			IntSliderConfigItem val2 = new IntSliderConfigItem(configEntry, val);
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val2);
		}

		private void CreateStringConfig(ConfigEntry<string> configEntry, bool requireRestart = false)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Expected O, but got Unknown
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			TextInputFieldConfigItem val = new TextInputFieldConfigItem(configEntry, new TextInputFieldOptions
			{
				RequiresRestart = requireRestart
			});
			LethalConfigManager.AddConfigItem((BaseConfigItem)(object)val);
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "ColorfulJarOfPickles";

		public const string PLUGIN_NAME = "ColorfulJarOfPickles";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace ColorfulJarOfPickles.Utils
{
	public class RegisterUtil
	{
		public static void RegisterEnemyWithConfig(string configMoonRarity, EnemyType enemy, TerminalNode terminalNode, TerminalKeyword terminalKeyword, float powerLevel, int spawnCount)
		{
			enemy.MaxCount = spawnCount;
			enemy.PowerLevel = powerLevel;
			var (dictionary, dictionary2) = ConfigParsing(configMoonRarity);
			Enemies.RegisterEnemy(enemy, dictionary, dictionary2, terminalNode, terminalKeyword);
		}

		public static void RegisterScrapWithConfig(string configMoonRarity, Item scrap)
		{
			var (dictionary, dictionary2) = ConfigParsing(configMoonRarity);
			Items.RegisterScrap(scrap, dictionary, dictionary2);
		}

		public static void RegisterShopItemWithConfig(bool enabledScrap, Item item, TerminalNode terminalNode, int itemCost, string configMoonRarity)
		{
			Items.RegisterShopItem(item, (TerminalNode)null, (TerminalNode)null, terminalNode, itemCost);
			if (enabledScrap)
			{
				RegisterScrapWithConfig(configMoonRarity, item);
			}
		}

		public static (Dictionary<LevelTypes, int> spawnRateByLevelType, Dictionary<string, int> spawnRateByCustomLevelType) ConfigParsing(string configMoonRarity)
		{
			//IL_0099: 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)
			Dictionary<LevelTypes, int> dictionary = new Dictionary<LevelTypes, int>();
			Dictionary<string, int> dictionary2 = new Dictionary<string, int>();
			foreach (string item in from s in configMoonRarity.Split(',')
				select s.Trim())
			{
				string[] array = item.Split(':');
				if (array.Length != 2)
				{
					continue;
				}
				string text = array[0];
				if (!int.TryParse(array[1], out var result))
				{
					continue;
				}
				if (Enum.TryParse<LevelTypes>(text, ignoreCase: true, out LevelTypes result2))
				{
					dictionary[result2] = result;
					continue;
				}
				string value = text + "Level";
				if (Enum.TryParse<LevelTypes>(value, ignoreCase: true, out result2))
				{
					dictionary[result2] = result;
				}
				else
				{
					dictionary2[text] = result;
				}
			}
			return (dictionary, dictionary2);
		}
	}
}
namespace ColorfulJarOfPickles.Scripts
{
	public class ColorfulJarOfPicklesScrap : PhysicsProp
	{
		public GameObject jarGameObject;

		public List<GameObject> picklesGameObjects;

		public Light lightObject;

		public List<Renderer> jarRenderers;

		public Color actualColor;

		public virtual void TriggerDance(bool dance)
		{
		}

		public void ChangeColor(Color color)
		{
			//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)
			//IL_001c: 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_0046: Unknown result type (might be due to invalid IL or missing references)
			lightObject.color = color;
			jarRenderers.ForEach(delegate(Renderer r)
			{
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: 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)
				r.material.color = SetColorAlpha(color, r.material.color.a);
				if (((Object)r.material).name.Contains("Pickle"))
				{
					r.material.SetColor("_EmissiveColor", color);
				}
			});
			actualColor = color;
		}

		public float RandomZeroToOne()
		{
			return Random.Range(0f, 1f);
		}

		public float RandomLightColorFloat()
		{
			return Random.Range(0.75f, 1f);
		}

		public Color SetColorAlpha(Color color, float alpha)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			return new Color(((Color)(ref color))[0], ((Color)(ref color))[1], ((Color)(ref color))[2], alpha);
		}

		public Color GetRandomColor(float initialAlpha = 1f)
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			Color result = default(Color);
			((Color)(ref result))..ctor(RandomZeroToOne(), RandomZeroToOne(), RandomZeroToOne(), initialAlpha);
			((Color)(ref result))[Random.Range(0, 4)] = RandomLightColorFloat();
			return result;
		}

		public override void Start()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			((GrabbableObject)this).Start();
			picklesGameObjects.ForEach(delegate(GameObject p)
			{
				jarRenderers.Add(p.GetComponent<Renderer>());
			});
			List<Renderer> list = jarGameObject.GetComponents<Renderer>().ToList();
			list.ForEach(delegate(Renderer o)
			{
				if (((Object)o.material).name.Contains("JarGlass"))
				{
					jarRenderers.Add(o);
				}
			});
			ChangeColor(GetRandomColor());
			if (((NetworkBehaviour)this).IsServer)
			{
				((MonoBehaviour)this).StartCoroutine(ChangeColorCoroutine());
			}
			else
			{
				((MonoBehaviour)this).StartCoroutine(AskColorCoroutine());
			}
		}

		public IEnumerator ChangeColorCoroutine()
		{
			yield return (object)new WaitForSeconds(0.5f);
			NetworkColorfulJar.ChangeJarColorClientRpc(((NetworkBehaviour)this).NetworkObjectId, GetRandomColor());
		}

		public IEnumerator AskColorCoroutine()
		{
			yield return (object)new WaitForSeconds(1f);
			NetworkColorfulJar.AskColorServerRpc(((NetworkBehaviour)this).NetworkObjectId);
		}
	}
	public class DancingJarOfPickles : ColorfulJarOfPicklesScrap
	{
		private static readonly int Playing = Animator.StringToHash("playing");

		public Animator animator;

		public AudioClip happySong;

		public AudioSource audioSource;

		private bool isPlaying;

		public IEnumerator onPlayingSong()
		{
			yield return (object)new WaitUntil((Func<bool>)(() => !audioSource.isPlaying));
			isPlaying = false;
			animator.SetBool(Playing, false);
		}

		public override void TriggerDance(bool dance)
		{
			animator.SetBool(Playing, dance);
			if (dance)
			{
				audioSource.volume = ColorfulJarOfPicklesPlugin.instance.dancingMusicVolume.Value;
				audioSource.PlayOneShot(happySong);
			}
			else if (audioSource.isPlaying)
			{
				audioSource.Stop();
			}
			((MonoBehaviour)this).StartCoroutine(onPlayingSong());
		}

		public override void GrabItem()
		{
			((GrabbableObject)this).GrabItem();
			isPlaying = !isPlaying;
			NetworkColorfulJar.DancePicklesServerRpc(((NetworkBehaviour)this).NetworkObjectId, isPlaying);
		}
	}
	[StaticNetcode]
	public class NetworkColorfulJar
	{
		private static ColorfulJarOfPicklesScrap GetPickles(ulong NetworkId)
		{
			List<ColorfulJarOfPicklesScrap> list = Object.FindObjectsByType<ColorfulJarOfPicklesScrap>((FindObjectsSortMode)0).ToList();
			ColorfulJarOfPicklesScrap colorfulJarOfPicklesScrap = null;
			foreach (ColorfulJarOfPicklesScrap item in list)
			{
				if (((NetworkBehaviour)item).NetworkObjectId == NetworkId)
				{
					colorfulJarOfPicklesScrap = item;
				}
			}
			if ((Object)(object)colorfulJarOfPicklesScrap == (Object)null)
			{
				Debug.LogError((object)$"ColorfulJarOfPickles not found, network id : {NetworkId}");
			}
			return colorfulJarOfPicklesScrap;
		}

		[ServerRpc]
		public static void AskColorServerRpc(ulong networkId)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			ColorfulJarOfPicklesScrap pickles = GetPickles(networkId);
			ChangeJarColorClientRpc(networkId, pickles.actualColor);
		}

		[ClientRpc]
		public static void ChangeJarColorClientRpc(ulong networkId, Color color)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			ColorfulJarOfPicklesScrap pickles = GetPickles(networkId);
			if ((Object)(object)pickles != (Object)null)
			{
				Debug.Log((object)$"COLOR CHANGE {networkId} SET VALUE {color}");
				pickles.ChangeColor(color);
			}
		}

		[ServerRpc]
		public static void DancePicklesServerRpc(ulong networkId, bool danse)
		{
			DancePicklesClientRpc(networkId, danse);
		}

		[ClientRpc]
		public static void DancePicklesClientRpc(ulong networkId, bool dance)
		{
			ColorfulJarOfPicklesScrap pickles = GetPickles(networkId);
			if ((Object)(object)pickles != (Object)null)
			{
				pickles.TriggerDance(dance);
			}
		}
	}
	public class RainbowColorfulJarOfPickles : ColorfulJarOfPicklesScrap
	{
		private Color nextColor;

		private float lightSpeed = 1.5f;

		private float lightSpeedTimer;

		private Color lastColorSaved;

		public override void Start()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			base.Start();
			lastColorSaved = GetRandomColor();
			nextColor = GetRandomColor();
		}

		public override void Update()
		{
			//IL_005b: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: 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)
			((GrabbableObject)this).Update();
			lightSpeedTimer += Time.deltaTime;
			if (lightSpeedTimer >= lightSpeed)
			{
				lightSpeedTimer = 0f;
				lastColorSaved = nextColor;
				nextColor = GetRandomColor();
			}
			ChangeColor(Color.Lerp(lastColorSaved, nextColor, Mathf.Clamp(lightSpeedTimer / lightSpeed, 0f, 1f)));
		}
	}
	public class RainbowDancingJarOfPickles : RainbowColorfulJarOfPickles
	{
		private static readonly int Playing = Animator.StringToHash("playing");

		public Animator animator;

		public AudioClip happySong;

		public AudioSource audioSource;

		private bool isPlaying;

		public IEnumerator onPlayingSong()
		{
			yield return (object)new WaitUntil((Func<bool>)(() => !audioSource.isPlaying));
			isPlaying = false;
			animator.SetBool(Playing, false);
		}

		public override void TriggerDance(bool dance)
		{
			animator.SetBool(Playing, dance);
			if (dance)
			{
				audioSource.volume = ColorfulJarOfPicklesPlugin.instance.dancingMusicVolume.Value;
				audioSource.PlayOneShot(happySong);
			}
			else if (audioSource.isPlaying)
			{
				audioSource.Stop();
			}
			((MonoBehaviour)this).StartCoroutine(onPlayingSong());
		}

		public override void GrabItem()
		{
			((GrabbableObject)this).GrabItem();
			isPlaying = !isPlaying;
			NetworkColorfulJar.DancePicklesServerRpc(((NetworkBehaviour)this).NetworkObjectId, isPlaying);
		}
	}
}