Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of FirstDayWeathers v0.0.1
FirstDayWeathers.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using FirstDayWeathers.NetcodePatcher; using HarmonyLib; using Microsoft.CodeAnalysis; using MrovLib.Events; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem.Utilities; using WeatherRegistry; using WeatherRegistry.Events; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("WeatherRegistry")] [assembly: AssemblyCompany("FirstDayWeathers")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: AssemblyInformationalVersion("0.0.1+bc509942c7277ad9f5f92b9df4e6cbddd97cbf5b")] [assembly: AssemblyProduct("FirstDayWeathers")] [assembly: AssemblyTitle("FirstDayWeathers")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/AndreyMrovol/LethalWeatherRegistry/")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } 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 FirstDayWeathers { public class LevelWeatherSetting { public Weather Weather; public SelectableLevel Level; } internal class ConfigHelper { private static Dictionary<string, SelectableLevel> _levelsDictionary; private static Dictionary<string, Weather> _weathersDictionary; public static Dictionary<string, SelectableLevel> StringToLevel { get { if (_levelsDictionary != null) { return _levelsDictionary; } Dictionary<string, SelectableLevel> Levels = new Dictionary<string, SelectableLevel>(); StartOfRound.Instance.levels.ToList().ForEach(delegate(SelectableLevel level) { Levels.TryAdd(GetNumberlessName(level).ToLower(), level); Levels.TryAdd(level.PlanetName.ToLower(), level); Levels.TryAdd(((Object)level).name.ToLower(), level); }); _levelsDictionary = Levels; return Levels; } set { _levelsDictionary = value; } } public static Dictionary<string, Weather> StringToWeather { get { if (_weathersDictionary != null) { return _weathersDictionary; } Dictionary<string, Weather> Weathers = new Dictionary<string, Weather>(); WeatherManager.Weathers.ToList().ForEach(delegate(Weather weather) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected I4, but got Unknown Weathers.TryAdd(((Object)weather).name.ToLower(), weather); Weathers.TryAdd(weather.Name.ToLower(), weather); Weathers.TryAdd(((int)weather.VanillaWeatherType).ToString(), weather); }); _weathersDictionary = Weathers; return Weathers; } set { _weathersDictionary = value; } } public static SelectableLevel ResolveStringToLevel(string str) { return StringToLevel.GetValueOrDefault(str.ToLower()); } public static Weather ResolveStringToWeather(string str) { return StringToWeather.GetValueOrDefault(str.ToLower()); } public static string GetNumberlessName(SelectableLevel level) { return new string(level.PlanetName.SkipWhile((char c) => !char.IsLetter(c)).ToArray()); } public static string[] ConvertStringToArray(string str) { return (from s in str.Split(';') where !string.IsNullOrWhiteSpace(s) select s.Trim()).ToArray(); } public static LevelWeatherSetting[] ConvertStringToPairings(string str) { string[] array = ConvertStringToArray(str); List<LevelWeatherSetting> list = new List<LevelWeatherSetting>(); string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string[] array3 = array2[i].Split('@'); if (array3.Length == 2) { list.Add(new LevelWeatherSetting { Weather = ResolveStringToWeather(array3[0]), Level = ResolveStringToLevel(array3[1]) }); } } return list.ToArray(); } } public class ConfigManager { internal static ConfigFile configFile; public static ConfigManager Instance { get; private set; } public static ConfigEntry<string> Weathers { get; private set; } public static void Init(ConfigFile config) { Instance = new ConfigManager(config); } private ConfigManager(ConfigFile config) { configFile = config; Weathers = configFile.Bind<string>("General", "Weathers", "None@Experimentation", "Weather@Level pairs to set on the first day. Format: WeatherName@LevelName;WeatherName@LevelName;"); } } [BepInPlugin("FirstDayWeathers", "FirstDayWeathers", "0.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInIncompatibility("WeatherTweaks")] public class Plugin : BaseUnityPlugin { [CompilerGenerated] private static class <>O { public static Event <0>__OverrideFirstDayWeathers; } internal static ManualLogSource logger; internal static Harmony harmony = new Harmony("FirstDayWeathers"); private void Awake() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown logger = ((BaseUnityPlugin)this).Logger; ConfigManager.Init(((BaseUnityPlugin)this).Config); harmony.PatchAll(); WeatherRegistryEvent setupFinished = EventManager.SetupFinished; object obj = <>O.<0>__OverrideFirstDayWeathers; if (obj == null) { Event val = WeatherSelection.OverrideFirstDayWeathers; <>O.<0>__OverrideFirstDayWeathers = val; obj = (object)val; } ((CustomEvent)setupFinished).AddListener((Event)obj); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin FirstDayWeathers is loaded!"); } } public class WeatherSelection { internal static LevelWeatherSetting[] levelWeatherSettings; public static void OverrideFirstDayWeathers() { ArrayHelpers.Clear<LevelWeatherSetting>(levelWeatherSettings); if (((NetworkBehaviour)StartOfRound.Instance).IsHost && StartOfRound.Instance.gameStats.daysSpent == 0) { levelWeatherSettings = ConfigHelper.ConvertStringToPairings(ConfigManager.Weathers.Value); LevelWeatherSetting[] array = levelWeatherSettings; foreach (LevelWeatherSetting levelWeatherSetting in array) { Plugin.logger.LogDebug((object)("Setting weather " + levelWeatherSetting.Weather.Name + " on level " + levelWeatherSetting.Level.PlanetName)); WeatherController.ChangeWeather(levelWeatherSetting.Level, levelWeatherSetting.Weather); } } } } public static class PluginInfo { public const string PLUGIN_GUID = "FirstDayWeathers"; public const string PLUGIN_NAME = "FirstDayWeathers"; public const string PLUGIN_VERSION = "0.0.1"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace FirstDayWeathers.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }