using 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 <>9__2_0; public static Predicate <>9__3_0; internal void 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 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 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 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 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 b__2_0(Level l) { return ((Object)l).name == "Level - Arena Race"; } internal bool 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 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 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; } }