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 REPOArena v1.0.0
REPOArena.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using MenuLib; using MenuLib.MonoBehaviors; 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("REPORace")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("REPORace")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("6badc5fc-7016-4ffb-8376-ca64469840a4")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] internal static class MyPluginInfo { internal const string PLUGIN_GUID = "nolex.repo.repoarena"; internal const string PLUGIN_NAME = "REPOArena"; internal const string PLUGIN_VERSION = "1.0.0"; } [BepInPlugin("com.nolex.repoarena", "REPOArena", "1.0.0")] public class Plugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ScrollViewBuilderDelegate <>9__1_2; public static ScrollViewBuilderDelegate <>9__1_3; public static ScrollViewBuilderDelegate <>9__1_4; public static Action <>9__1_1; public static BuilderDelegate <>9__1_0; public static Predicate<Level> <>9__2_0; public static Predicate<Level> <>9__3_0; internal void <Awake>b__1_0(Transform parent) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) REPOButton val = MenuAPI.CreateREPOButton("Arena Modes", (Action)delegate { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Expected O, but got Unknown <>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0 { popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f) }; REPOPopupPage popup = CS$<>8__locals0.popup; object obj = <>9__1_2; if (obj == null) { ScrollViewBuilderDelegate val2 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val8 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val8).rectTransform; }; <>9__1_2 = val2; obj = (object)val2; } popup.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f); REPOPopupPage popup2 = CS$<>8__locals0.popup; object obj2 = <>9__1_3; if (obj2 == null) { ScrollViewBuilderDelegate val3 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val7 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val7).rectTransform; }; <>9__1_3 = val3; obj2 = (object)val3; } popup2.AddElementToScrollView((ScrollViewBuilderDelegate)obj2, 0f, 0f); REPOPopupPage popup3 = CS$<>8__locals0.popup; object obj3 = <>9__1_4; if (obj3 == null) { ScrollViewBuilderDelegate val4 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val6 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val6).rectTransform; }; <>9__1_4 = val4; obj3 = (object)val4; } popup3.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f); CS$<>8__locals0.popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) REPOButton val5 = MenuAPI.CreateREPOButton("Close", (Action)delegate { CS$<>8__locals0.popup.ClosePage(true); }, scrollView, Vector2.zero); return ((REPOElement)val5).rectTransform; }, 0f, 0f); CS$<>8__locals0.popup.OpenPage(false); }, parent, new Vector2(360f, 261f)); } internal void <Awake>b__1_1() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Expected O, but got Unknown <>c__DisplayClass1_0 CS$<>8__locals0 = new <>c__DisplayClass1_0 { popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f) }; REPOPopupPage popup = CS$<>8__locals0.popup; object obj = <>9__1_2; if (obj == null) { ScrollViewBuilderDelegate val = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val7 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val7).rectTransform; }; <>9__1_2 = val; obj = (object)val; } popup.AddElementToScrollView((ScrollViewBuilderDelegate)obj, 0f, 0f); REPOPopupPage popup2 = CS$<>8__locals0.popup; object obj2 = <>9__1_3; if (obj2 == null) { ScrollViewBuilderDelegate val2 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val6 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val6).rectTransform; }; <>9__1_3 = val2; obj2 = (object)val2; } popup2.AddElementToScrollView((ScrollViewBuilderDelegate)obj2, 0f, 0f); REPOPopupPage popup3 = CS$<>8__locals0.popup; object obj3 = <>9__1_4; if (obj3 == null) { ScrollViewBuilderDelegate val3 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val5 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val5).rectTransform; }; <>9__1_4 = val3; obj3 = (object)val3; } popup3.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f); CS$<>8__locals0.popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) REPOButton val4 = MenuAPI.CreateREPOButton("Close", (Action)delegate { CS$<>8__locals0.popup.ClosePage(true); }, scrollView, Vector2.zero); return ((REPOElement)val4).rectTransform; }, 0f, 0f); CS$<>8__locals0.popup.OpenPage(false); } internal RectTransform <Awake>b__1_2(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val).rectTransform; } internal RectTransform <Awake>b__1_3(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val).rectTransform; } internal RectTransform <Awake>b__1_4(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val).rectTransform; } internal bool <OnArenaRaceButtonClicked>b__2_0(Level l) { return ((Object)l).name == "Level - Arena Race"; } internal bool <OnArenaFightButtonClicked>b__3_0(Level l) { return ((Object)l).name == "Level - Arena Fight"; } } [CompilerGenerated] private sealed class <>c__DisplayClass1_0 { public REPOPopupPage popup; public Action <>9__6; internal RectTransform <Awake>b__5(Transform scrollView) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) REPOButton val = MenuAPI.CreateREPOButton("Close", (Action)delegate { popup.ClosePage(true); }, scrollView, Vector2.zero); return ((REPOElement)val).rectTransform; } internal void <Awake>b__6() { popup.ClosePage(true); } } internal static ManualLogSource Log; private void Awake() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; object obj = <>c.<>9__1_0; if (obj == null) { BuilderDelegate val = delegate(Transform parent) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) REPOButton val2 = MenuAPI.CreateREPOButton("Arena Modes", (Action)delegate { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Expected O, but got Unknown REPOPopupPage popup = MenuAPI.CreateREPOPopupPage("Arena Modes", (PresetSide)1, false, true, 1.5f); REPOPopupPage obj2 = popup; object obj3 = <>c.<>9__1_2; if (obj3 == null) { ScrollViewBuilderDelegate val3 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val9 = MenuAPI.CreateREPOButton("Race Arena", (Action)OnArenaRaceButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val9).rectTransform; }; <>c.<>9__1_2 = val3; obj3 = (object)val3; } obj2.AddElementToScrollView((ScrollViewBuilderDelegate)obj3, 0f, 0f); REPOPopupPage obj4 = popup; object obj5 = <>c.<>9__1_3; if (obj5 == null) { ScrollViewBuilderDelegate val4 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val8 = MenuAPI.CreateREPOButton("Fight Arena", (Action)OnArenaFightButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val8).rectTransform; }; <>c.<>9__1_3 = val4; obj5 = (object)val4; } obj4.AddElementToScrollView((ScrollViewBuilderDelegate)obj5, 0f, 0f); REPOPopupPage obj6 = popup; object obj7 = <>c.<>9__1_4; if (obj7 == null) { ScrollViewBuilderDelegate val5 = delegate(Transform scrollView) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) REPOButton val7 = MenuAPI.CreateREPOButton("Random Arena", (Action)OnRandomArenaButtonClicked, scrollView, Vector2.zero); return ((REPOElement)val7).rectTransform; }; <>c.<>9__1_4 = val5; obj7 = (object)val5; } obj6.AddElementToScrollView((ScrollViewBuilderDelegate)obj7, 0f, 0f); popup.AddElementToScrollView((ScrollViewBuilderDelegate)delegate(Transform scrollView) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) REPOButton val6 = MenuAPI.CreateREPOButton("Close", (Action)delegate { popup.ClosePage(true); }, scrollView, Vector2.zero); return ((REPOElement)val6).rectTransform; }, 0f, 0f); popup.OpenPage(false); }, parent, new Vector2(360f, 261f)); }; <>c.<>9__1_0 = val; obj = (object)val; } MenuAPI.AddElementToLobbyMenu((BuilderDelegate)obj); Log.LogMessage((object)"REPOArena loaded !"); } private static void OnArenaRaceButtonClicked() { if (CheckHost()) { Level val = RunManager.instance.levelArena.Find((Level l) => ((Object)l).name == "Level - Arena Race"); if ((Object)(object)val == (Object)null) { Log.LogWarning((object)"[REPORace] Level 'Level - Arena Race' not found !"); return; } RunManager.instance.levelCurrent = val; StartArena(); } } private static void OnArenaFightButtonClicked() { if (CheckHost()) { Level val = RunManager.instance.levelArena.Find((Level l) => ((Object)l).name == "Level - Arena Fight"); if ((Object)(object)val == (Object)null) { Log.LogWarning((object)"[REPORace] Level 'Level - Arena Fight' not found !"); return; } RunManager.instance.levelCurrent = val; StartArena(); } } private static void OnRandomArenaButtonClicked() { if (CheckHost()) { int index = Random.Range(0, RunManager.instance.levelArena.Count); RunManager.instance.levelCurrent = RunManager.instance.levelArena[index]; StartArena(); } } private static void StartArena() { Log.LogInfo((object)("[REPORace] Launch of the arena → " + ((Object)RunManager.instance.levelCurrent).name)); SemiFunc.SaveFileCreate(); RunManager.instance.ChangeLevel(false, false, (ChangeLevelType)0); } private static bool CheckHost() { if (!SemiFunc.IsMasterClientOrSingleplayer()) { Log.LogWarning((object)"[REPORace] Only host can launch arena modes."); return false; } if (!SemiFunc.RunIsLobbyMenu()) { Log.LogWarning((object)"[REPORace] Not in the menu lobby, action cancels."); return false; } if (RunManager.instance.levelArena == null || RunManager.instance.levelArena.Count == 0) { Log.LogWarning((object)"[REPORace] No arena level found in RunManager."); return false; } return true; } }