Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Ash ChestPrices v2.0.0
plugin/Ash_ChestPrices.dll
Decompiled 2 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using RoR2; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Ash_ChestPrices")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Ash_ChestPrices")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4fb74315-d95d-4dea-8ae0-0c45fef14b65")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace Ash_ChestPrices; [BepInPlugin("Ashen_O.Ash_ChestPrices", "Ash_ChestPrices", "2.0.0")] public class Ash_ChestPrices : BaseUnityPlugin { [CompilerGenerated] private sealed class <LogInteractables>d__2 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Ash_ChestPrices <>4__this; private PurchaseInteraction[] <items>5__1; private List<PurchaseInteraction> <moneyItems>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LogInteractables>d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <items>5__1 = null; <moneyItems>5__2 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; <items>5__1 = Object.FindObjectsOfType<PurchaseInteraction>(true); <moneyItems>5__2 = <>4__this.FilterAndCount(<items>5__1); <>4__this.SendChatMessage(<moneyItems>5__2); 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(); } } private Dictionary<string, int> assetSpawnCounts = new Dictionary<string, int>(); public void Awake() { SceneDirector.onPostPopulateSceneServer += delegate { assetSpawnCounts.Clear(); ((MonoBehaviour)this).StartCoroutine(LogInteractables()); }; } [IteratorStateMachine(typeof(<LogInteractables>d__2))] private IEnumerator LogInteractables() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LogInteractables>d__2(0) { <>4__this = this }; } private List<PurchaseInteraction> FilterAndCount(PurchaseInteraction[] items) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 List<PurchaseInteraction> list = new List<PurchaseInteraction>(); foreach (PurchaseInteraction val in items) { if ((int)val.costType == 1) { list.Add(val); string name = ((Object)((Component)val).gameObject).name; if (!assetSpawnCounts.ContainsKey(name)) { assetSpawnCounts[name] = 0; } assetSpawnCounts[name]++; } } foreach (string item in assetSpawnCounts.Keys.ToList()) { if (item.Contains("MultiShop")) { assetSpawnCounts[item] /= 3; } } return list; } private void SendChatMessage(List<PurchaseInteraction> moneyItems) { //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown List<string> list = new List<string>(); list.Add("<color=red>[Ash]</color> Current stage costs:"); List<string> list2 = new List<string>(); foreach (PurchaseInteraction moneyItem in moneyItems) { string displayName = moneyItem.GetDisplayName(); string name = ((Object)((Component)moneyItem).gameObject).name; int networkcost = moneyItem.Networkcost; int num = assetSpawnCounts[name]; if (!name.Contains("Broken") && !list2.Contains(name)) { list2.Add(name); list.Add($"<color=green>{displayName}:</color> <color=yellow>{networkcost}</color>[{num}]"); Debug.Log((object)$"[Ash][ChestPrices][ChestCost] GameObject: {name}, In-game Name: {displayName}, Cost: {networkcost}, Count: {num}"); } } Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = string.Join("\n", list) }); } }