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 DarkenEmptyChests v1.0.1
DarkenEmptyChests.dll
Decompiled 3 weeks agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Barrel; using On.EntityStates.Barrel; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.Networking; [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("DarkenEmptyChests")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+cbd779ea0061b9e41b5c6092601d8323b2a1fd32")] [assembly: AssemblyProduct("DarkenEmptyChests")] [assembly: AssemblyTitle("DarkenEmptyChests")] [assembly: AssemblyVersion("1.0.0.0")] namespace DarkenEmptyChests; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("icejaw.darkenemptychests", "Darken Empty Chests", "1.0.0")] public class DarkenEmptyChests : BaseUnityPlugin { public static ConfigEntry<float> BrightnessMultiplier; public static ConfigEntry<float> FadeOutTime; public static ConfigEntry<bool> ShouldApplyToAdaptiveChests; private const float default_BrightnessMultiplier = 0.5f; private const float default_FadeOutTime = 1f; private const bool default_ShouldApplyToAdaptiveChests = false; internal static DarkenEmptyChests Instance; public void Awake() { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown Instance = this; BrightnessMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("DarkenEmptyChests", "BrightnessMultiplier", 0.5f, "How much to darken empty containers. (0 = completely black, 1 = normal)"); FadeOutTime = ((BaseUnityPlugin)this).Config.Bind<float>("DarkenEmptyChests", "FadeOutTime", 1f, "How long containers should take to fade out, in seconds."); ShouldApplyToAdaptiveChests = ((BaseUnityPlugin)this).Config.Bind<bool>("DarkenEmptyChests", "ShouldApplyToAdaptiveChests", false, "Whether adaptive chests should fade out after use."); Opened.OnEnter += new hook_OnEnter(On_Opened_OnEnter); DelusionChestController.ResetChestForDelusion += new hook_ResetChestForDelusion(On_DelusionChestController_ResetChestForDelusion); Opened.OnEnter += new hook_OnEnter(On_Opened_OnEnter); } internal static void Log(LogLevel level, object data) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ((BaseUnityPlugin)Instance).Logger.Log(level, data); } private void On_Opened_OnEnter(orig_OnEnter orig, Opened self) { orig.Invoke(self); ((Component)((EntityState)self).outer.commonComponents.modelLocator.modelTransform).gameObject.AddComponent<FadeObject>(); } private void On_Opened_OnEnter(orig_OnEnter orig, EntityState self) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown orig.Invoke((Opened)self); if (ShouldApplyToAdaptiveChests.Value && NetworkServer.active) { Transform modelTransform = self.outer.commonComponents.modelLocator.modelTransform; ((Component)modelTransform.GetChild(0)).gameObject.AddComponent<FadeObject>(); ((Component)modelTransform.GetChild(1)).gameObject.AddComponent<FadeObject>(); } } private void On_DelusionChestController_ResetChestForDelusion(orig_ResetChestForDelusion orig, DelusionChestController self) { orig.Invoke(self); FadeObject component = ((Component)((Component)self).gameObject.GetComponent<ModelLocator>().modelTransform).GetComponent<FadeObject>(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } } } public class FadeObject : MonoBehaviour { [CompilerGenerated] private sealed class <InterpolateBrightnessAndFade>d__11 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FadeObject <>4__this; private float <currentLerp>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <InterpolateBrightnessAndFade>d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown int num = <>1__state; FadeObject fadeObject = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <currentLerp>5__2 = 0f; break; case 1: <>1__state = -1; break; } if (<currentLerp>5__2 <= 1f) { fadeObject.currentBrightness = Mathf.SmoothStep(1f, fadeObject.TargetBrightness, <currentLerp>5__2); <currentLerp>5__2 += Time.deltaTime / fadeObject.FadeOutTime; <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <WaitUntilVisible>d__12 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FadeObject <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitUntilVisible>d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected O, but got Unknown //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown int num = <>1__state; FadeObject fadeObject = <>4__this; bool flag; switch (num) { default: return false; case 0: <>1__state = -1; flag = false; goto IL_004f; case 1: <>1__state = -1; flag = fadeObject.RenderersAreVisible(); goto IL_004f; case 2: { <>1__state = -1; fadeObject.RefreshRenderers(); SceneCamera.onSceneCameraPreRender += new SceneCameraDelegate(fadeObject.OnSceneCameraPreRender); return false; } IL_004f: if (!flag) { <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 1; return true; } <>2__current = (object)new WaitForSecondsRealtime(0.05f); <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private Renderer[] renderers; private readonly List<Color> originalColors = new List<Color>(); private float currentBrightness = 1f; private float TargetBrightness => DarkenEmptyChests.BrightnessMultiplier.Value; private float FadeOutTime => DarkenEmptyChests.FadeOutTime.Value; private void Start() { renderers = ((Component)this).gameObject.GetComponentsInChildren<Renderer>(); ((MonoBehaviour)this).StartCoroutine(WaitUntilVisible()); ((MonoBehaviour)this).StartCoroutine(InterpolateBrightnessAndFade()); } private void OnDestroy() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown SceneCamera.onSceneCameraPreRender -= new SceneCameraDelegate(OnSceneCameraPreRender); currentBrightness = 1f; OnSceneCameraPreRender(null); } private void RefreshRenderers() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) renderers = ((Component)this).gameObject.GetComponentsInChildren<Renderer>(); originalColors.Clear(); Renderer[] array = renderers; foreach (Renderer val in array) { originalColors.Add(val.material.color); } } private bool RenderersAreVisible() { bool result = true; Renderer[] array = renderers; foreach (Renderer val in array) { if ((Object)(object)val == (Object)null) { RefreshRenderers(); DarkenEmptyChests.Log((LogLevel)16, "Renderers became null, refreshing reference to renderers"); result = false; break; } if (!val.isVisible) { result = false; break; } } return result; } [IteratorStateMachine(typeof(<InterpolateBrightnessAndFade>d__11))] private IEnumerator InterpolateBrightnessAndFade() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <InterpolateBrightnessAndFade>d__11(0) { <>4__this = this }; } [IteratorStateMachine(typeof(<WaitUntilVisible>d__12))] private IEnumerator WaitUntilVisible() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitUntilVisible>d__12(0) { <>4__this = this }; } private void OnSceneCameraPreRender(SceneCamera _) { //IL_0014: 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_001c: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < renderers.Length; i++) { Renderer renderer = renderers[i]; Color color = originalColors[i]; ChangeColor(renderer, color); } } private void ChangeColor(Renderer renderer, Color color) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) try { renderer.material.color = color * currentBrightness; } catch (NullReferenceException) { DarkenEmptyChests.Log((LogLevel)16, "Setting color failed, refreshing reference to renderers"); RefreshRenderers(); } } }