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 LobbyPlayersEclipseLevels v1.0.1
plugins/LobbyPlayersEclipseLevels/LobbyPlayersEclipseLevels.dll
Decompiled 4 hours agousing System; 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.Logging; using Microsoft.CodeAnalysis; 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("LobbyPlayersEclipseLevels")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+114b2d1d8076bf8918f4de69060fbbf1c8a90c80")] [assembly: AssemblyProduct("LobbyPlayersEclipseLevels")] [assembly: AssemblyTitle("LobbyPlayersEclipseLevels")] [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 LobbyPlayersEclipseLevels { [BepInPlugin("diselgonk.LobbyPlayersEclipseLevels", "LobbyPlayersEclipseLevels", "1.0.0")] public class LobbyPlayersEclipseLevels : BaseUnityPlugin { public const string PluginGUID = "diselgonk.LobbyPlayersEclipseLevels"; public const string PluginAuthor = "diselgonk"; public const string PluginName = "LobbyPlayersEclipseLevels"; public const string PluginVersion = "1.0.0"; private List<NetworkUserId> processedUserIds = new List<NetworkUserId>(); public void Awake() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); PreGameController.RecalculateModifierAvailability += new hook_RecalculateModifierAvailability(PreGameController_RecalculateModifierAvailability); PreGameController.OnDestroy += new hook_OnDestroy(PreGameController_OnDestroy); PreGameController.OnNetworkUserLost += new hook_OnNetworkUserLost(PreGameController_OnNetworkUserLost); } private void PreGameController_OnNetworkUserLost(orig_OnNetworkUserLost orig, PreGameController self, NetworkUser networkUser) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, networkUser); if (NetworkServer.active) { Log.Debug($"Removed user id {networkUser.id} from processed", "I:\\_important\\_hobby\\c#\\ror2mods\\LobbyEclipseInfo\\LobbyPlayersEclipseLevels\\LobbyPlayersEclipseLevels.cs", 37); processedUserIds.Remove(networkUser.id); } } private void PreGameController_OnDestroy(orig_OnDestroy orig, PreGameController self) { orig.Invoke(self); if (NetworkServer.active) { Log.Debug("Cleared processed user ids", "I:\\_important\\_hobby\\c#\\ror2mods\\LobbyEclipseInfo\\LobbyPlayersEclipseLevels\\LobbyPlayersEclipseLevels.cs", 48); processedUserIds.Clear(); } } private void PreGameController_RecalculateModifierAvailability(orig_RecalculateModifierAvailability orig, PreGameController self) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!NetworkServer.active) { return; } foreach (NetworkUser readOnlyInstances in NetworkUser.readOnlyInstancesList) { if (!processedUserIds.Contains(readOnlyInstances.id) && !((NetworkBehaviour)readOnlyInstances).isLocalPlayer && PrintUserEclipseLevels(readOnlyInstances)) { Log.Debug($"Added user id {readOnlyInstances.id} to processed", "I:\\_important\\_hobby\\c#\\ror2mods\\LobbyEclipseInfo\\LobbyPlayersEclipseLevels\\LobbyPlayersEclipseLevels.cs", 70); processedUserIds.Add(readOnlyInstances.id); } } } private static bool PrintUserEclipseLevels(NetworkUser user) { //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Expected O, but got Unknown string userName = user.userName; if (string.IsNullOrEmpty(userName)) { Log.Warning("Couldn't print eclipse levels. " + userName + " - username is empty. How so?", "I:\\_important\\_hobby\\c#\\ror2mods\\LobbyEclipseInfo\\LobbyPlayersEclipseLevels\\LobbyPlayersEclipseLevels.cs", 81); return false; } Dictionary<SurvivorDef, int> dictionary = new Dictionary<SurvivorDef, int>(); foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { int networkUserSurvivorCompletedEclipseLevel = EclipseRun.GetNetworkUserSurvivorCompletedEclipseLevel(user, allSurvivorDef); dictionary.Add(allSurvivorDef, networkUserSurvivorCompletedEclipseLevel); } string text = userName + ": "; foreach (var (val2, num2) in dictionary) { if (num2 != 0) { string @string = Language.GetString(val2.displayNameToken); string text2 = ColorUtility.ToHtmlStringRGBA(val2.primaryColor); if (!string.IsNullOrEmpty(text2)) { text = text + "<color=#" + text2 + ">"; } text += $"{@string} - {num2} "; if (!string.IsNullOrEmpty(text2)) { text += "</color>"; } } } if (dictionary.All((KeyValuePair<SurvivorDef, int> kvp) => kvp.Value == 0)) { return false; } Log.Info(text ?? "", "I:\\_important\\_hobby\\c#\\ror2mods\\LobbyEclipseInfo\\LobbyPlayersEclipseLevels\\LobbyPlayersEclipseLevels.cs", 114); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = (text ?? "") }); return true; } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } private static string Format(object data, string file, int line) { string fileName = Path.GetFileName(file); return $"[{fileName}:{line}] {data}"; } internal static void Debug(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogDebug((object)Format(data, file, line)); } internal static void Error(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogError((object)Format(data, file, line)); } internal static void Fatal(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogFatal((object)Format(data, file, line)); } internal static void Info(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogInfo((object)Format(data, file, line)); } internal static void Message(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogMessage((object)Format(data, file, line)); } internal static void Warning(object data, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0) { _logSource.LogWarning((object)Format(data, file, line)); } } }