Decompiled source of CoolerEclipse v1.2.0

CoolerEclipse.dll

Decompiled 2 months ago
using 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 Microsoft.CodeAnalysis;
using On.RoR2;
using RoR2;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("CoolerEclipse")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+69a9d34d5e0ba1c14a26f19179afae09bfc47d8f")]
[assembly: AssemblyProduct("CoolerEclipse")]
[assembly: AssemblyTitle("CoolerEclipse")]
[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 CoolerEclipse
{
	[BepInPlugin("com.Nuxlar.CoolerEclipse", "CoolerEclipse", "1.2.0")]
	public class CoolerEclipse : BaseUnityPlugin
	{
		private GameObject eclipseWeather = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/eclipseworld/Weather, Eclipse.prefab").WaitForCompletion();

		public static ConfigEntry<bool> shouldBeChance;

		public static ConfigEntry<bool> shouldAlwaysApply;

		private Random rng;

		private static ConfigFile CEConfig { get; set; }

		public void Awake()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			CEConfig = new ConfigFile(Paths.ConfigPath + "\\com.Nuxlar.CoolerEclipse.cfg", true);
			shouldBeChance = CEConfig.Bind<bool>("General", "Chance Based", false, "Make the weather changes be a 50% chance instead of guaranteed.");
			shouldAlwaysApply = CEConfig.Bind<bool>("General", "Normal Runs", true, "Makes the weather changes apply to non-Eclipse runs.");
			rng = new Random();
			eclipseWeather.AddComponent<NetworkIdentity>();
			SceneDirector.Start += new hook_Start(AddSkybox);
		}

		private void AddSkybox(orig_Start orig, SceneDirector self)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: 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_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Invalid comparison between Unknown and I4
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0420: Unknown result type (might be due to invalid IL or missing references)
			//IL_0503: Unknown result type (might be due to invalid IL or missing references)
			GameObject[] source = Object.FindObjectsOfType<GameObject>();
			Scene activeScene = SceneManager.GetActiveScene();
			string name = ((Scene)(ref activeScene)).name;
			List<GameModeIndex> list = new List<GameModeIndex>
			{
				GameModeCatalog.FindGameModeIndex("ClassicRun(Clone)"),
				GameModeCatalog.FindGameModeIndex("EclipseRun(Clone)")
			};
			if (Object.op_Implicit((Object)(object)Run.instance) && list.Contains(Run.instance.gameModeIndex) && (shouldAlwaysApply.Value || (int)Run.instance.selectedDifficulty >= 3) && name != "moon2")
			{
				int seed = (int)(Run.instance.GetStartTimeUtc().Ticks ^ (Run.instance.stageClearCount << 16));
				rng = new Random(seed);
				if (shouldBeChance.Value && rng.NextDouble() > 0.5)
				{
					orig.Invoke(self);
					return;
				}
				if (source.Where((GameObject obj) => ((Object)obj).name.Contains("Weather,")).Count() > 0)
				{
					source.Where((GameObject obj) => ((Object)obj).name.Contains("Weather,")).First().SetActive(false);
					if (source.Where((GameObject obj) => ((Object)obj).name == "Sun").Count() > 0)
					{
						source.Where((GameObject obj) => ((Object)obj).name == "Sun").First().SetActive(false);
					}
				}
				else
				{
					GameObject val = GameObject.Find("Directional Light (SUN)");
					GameObject val2 = GameObject.Find("PP + Amb");
					GameObject val3 = GameObject.Find("Reflection Probe");
					if (Object.op_Implicit((Object)(object)val) && name != "moon2" && name != "skymeadow")
					{
						val.SetActive(false);
					}
					if (Object.op_Implicit((Object)(object)val2))
					{
						val2.SetActive(false);
					}
					if (Object.op_Implicit((Object)(object)val3))
					{
						val3.SetActive(false);
					}
					if (Object.op_Implicit((Object)(object)GameObject.Find("Reflection Probe")))
					{
						val3.SetActive(false);
					}
				}
				GameObject val4 = Object.Instantiate<GameObject>(eclipseWeather, new Vector3(0f, 0f, 0f), Quaternion.identity);
				Light component = ((Component)val4.transform.GetChild(1)).GetComponent<Light>();
				component.shadowStrength = 0.25f;
				SetAmbientLight component2 = ((Component)val4.transform.GetChild(2)).GetComponent<SetAmbientLight>();
				component2.ambientIntensity = 0.75f;
				component2.ApplyLighting();
				if (name == "blackbeach" || name == "moon2")
				{
					((Component)val4.transform.GetChild(2)).GetComponent<PostProcessVolume>().priority = 9999f;
				}
				((Component)val4.transform.GetChild(0)).GetComponent<ReflectionProbe>().Reset();
				((Component)val4.transform.GetChild(3).GetChild(2)).gameObject.SetActive(true);
				if (name.Contains("blackbeach") || name.Contains("golemplains"))
				{
					component2.ambientIntensity = 1f;
					component2.ApplyLighting();
				}
				if (name == "snowyforest")
				{
					component2.ambientIntensity = 0.5f;
					component2.ApplyLighting();
					GameObject val5 = GameObject.Find("Treecards");
					if (Object.op_Implicit((Object)(object)val5))
					{
						val5.SetActive(false);
					}
				}
				if (name == "frozenwall")
				{
					component.intensity = 0.25f;
					component2.ambientIntensity = 0.25f;
					component2.ApplyLighting();
				}
				if (name == "rootjungle")
				{
					((Component)val4.transform.GetChild(0)).gameObject.SetActive(false);
					GameObject val6 = GameObject.Find("HOLDER: Weather Set 1");
					if (Object.op_Implicit((Object)(object)val6))
					{
						val6.gameObject.SetActive(false);
					}
				}
				if (name.Contains("skymeadow"))
				{
					((Component)val4.transform.GetChild(1)).gameObject.SetActive(false);
					GameObject.Find("Directional Light (SUN)").GetComponent<Light>().color = component.color;
					component2.ambientIntensity = 1f;
					component2.ApplyLighting();
					GameObject val7 = GameObject.Find("ShatteredMoonMesh");
					if (Object.op_Implicit((Object)(object)val7))
					{
						((Renderer)val7.GetComponent<MeshRenderer>()).sortingOrder = -1;
					}
				}
				if (name == "dampcavesimple")
				{
					GameObject val8 = GameObject.Find("Main Camera(Clone)");
					if (Object.op_Implicit((Object)(object)val8))
					{
						((Component)val8.transform.GetChild(0)).GetComponent<PostProcessLayer>().breakBeforeColorGrading = true;
					}
					if (Object.op_Implicit((Object)(object)GameObject.Find("DCPPInTunnels")))
					{
						GameObject.Find("DCPPInTunnels").SetActive(false);
					}
					component2.ambientIntensity = 1.25f;
					component2.ApplyLighting();
				}
				if (name == "moon2")
				{
					((Component)val4.transform.GetChild(1)).gameObject.SetActive(false);
					GameObject.Find("Directional Light (SUN)").GetComponent<Light>().color = component.color;
					component2.ambientIntensity = 0.5f;
					component2.ApplyLighting();
					GameObject val9 = GameObject.Find("Moon");
					if (Object.op_Implicit((Object)(object)val9))
					{
						((Renderer)val9.GetComponent<MeshRenderer>()).sortingOrder = -1;
					}
				}
				NetworkServer.Spawn(val4);
			}
			orig.Invoke(self);
		}
	}
}