RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of AutomaticInviter v1.2.2
Mods/AutomaticInviter.dll
Decompiled a week agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.RegularExpressions; using AutomaticInviter; using HarmonyLib; using Il2CppInterop.Runtime; using Il2CppRUMBLE.Interactions.InteractionBase; using Il2CppRUMBLE.Players; using Il2CppRUMBLE.Social; using Il2CppRUMBLE.Social.Phone; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using Il2CppTMPro; using MelonLoader; using Microsoft.CodeAnalysis; using RumbleModUI; using RumbleModdingAPI.RMAPI; using UnityEngine; using UnityEngine.Events; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: MelonInfo(typeof(Core), "AutomaticInviter", "1.2.2", "Orangenal", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("AutomaticInviter")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+3cdf6f4482e5ed8392b27da24bd0e247c6426e9a")] [assembly: AssemblyProduct("AutomaticInviter")] [assembly: AssemblyTitle("AutomaticInviter")] [assembly: NeutralResourcesLanguage("en-US")] [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 AutomaticInviter { public class Core : MelonMod { [CompilerGenerated] private sealed class <>c__DisplayClass26_0 { public UserData userData; internal bool <InviteListByFriendCode>b__0(Player player) { return player.Data.GeneralData.PlayFabMasterId == userData.playFabMasterId; } } [CompilerGenerated] private sealed class <>c__DisplayClass27_0 { public PlayerTag playerTag; internal bool <WaitForUserData>b__0(Player player) { return player.Data.GeneralData.PlayFabMasterId == playerTag.UserData.playFabMasterId; } } [CompilerGenerated] private sealed class <InviteListByFriendCode>d__26 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public string[] codes; public OptionsPage optionsPage; private FindUser <findUser>5__2; private string[] <>7__wrap2; private int <>7__wrap3; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <InviteListByFriendCode>d__26(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <findUser>5__2 = null; <>7__wrap2 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; goto IL_018b; } <>1__state = -1; if (codes.Length < 1) { loggerInstance.Error("Code list is empty!"); inviteListByCodeCoroutine = null; return false; } if ((Object)(object)optionsPage == (Object)null) { GameObject gameObject = SettingsScreen.GetGameObject(); if ((Object)(object)gameObject == (Object)null) { loggerInstance.Error("Cannot find settings page object!"); inviteListByCodeCoroutine = null; return false; } optionsPage = gameObject.GetComponent<OptionsPage>(); if ((Object)(object)optionsPage == (Object)null) { loggerInstance.Error("Cannot find options page!"); inviteListByCodeCoroutine = null; return false; } } GameObject gameObject2 = PlayerFinderScreen.GetGameObject(); <findUser>5__2 = gameObject2.GetComponent<FindUser>(); <>7__wrap2 = codes; <>7__wrap3 = 0; goto IL_01bb; IL_01bb: if (<>7__wrap3 < <>7__wrap2.Length) { string text = <>7__wrap2[<>7__wrap3]; if (codeCache.ContainsKey(text)) { <>c__DisplayClass26_0 CS$<>8__locals0 = new <>c__DisplayClass26_0(); loggerInstance.Msg("Inviting player with friend code " + text); CS$<>8__locals0.userData = codeCache[text]; if (((IEnumerable<Player>)Players.GetAllPlayers().ToArray()).Where((Player player) => player.Data.GeneralData.PlayFabMasterId == CS$<>8__locals0.userData.playFabMasterId).Count() == 0) { InvitePerson(CS$<>8__locals0.userData, optionsPage); } inviteListByCodeCoroutine = null; return false; } loggerInstance.Msg("Finding player with friend code " + text); InvitePersonByFriendCode(text, <findUser>5__2); goto IL_018b; } <>7__wrap2 = null; inviteListByCodeCoroutine = null; return false; IL_018b: if (invokedFind != null) { <>2__current = null; <>1__state = 1; return true; } for (int i = 1; i <= 8; i++) { <findUser>5__2.OnBackspacePressed(); } <>7__wrap3++; goto IL_01bb; } 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 <WaitForUserData>d__27 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerTag playerTag; private <>c__DisplayClass27_0 <>8__1; public string code; public OptionsPage options; private int <count>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForUserData>d__27(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>8__1 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>8__1 = new <>c__DisplayClass27_0(); <>8__1.playerTag = playerTag; <count>5__2 = 0; break; case 1: <>1__state = -1; break; } if (<>8__1.playerTag.UserData.publicName == "" && <count>5__2 < 5000) { <count>5__2++; <>2__current = null; <>1__state = 1; return true; } if (<count>5__2 == 5000) { loggerInstance.Warning("Search for user timed out"); return false; } if (((IEnumerable<Player>)Players.GetAllPlayers().ToArray()).Where((Player player) => player.Data.GeneralData.PlayFabMasterId == <>8__1.playerTag.UserData.playFabMasterId).Count() != 0) { return false; } codeCache.Add(code, <>8__1.playerTag.UserData); options.Initialize(<>8__1.playerTag.UserData); loggerInstance.Msg("Inviting player with friend code " + code); InvitePerson(<>8__1.playerTag.UserData, options); 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 string[] usernameList; private string usernamesPath = "UserData/AutomaticInviter/usernames.txt"; private string[] IDList; private string IDsPath = "UserData/AutomaticInviter/IDs.txt"; private string[] CodesList; private string CodesListPath = "UserData/AutomaticInviter/FriendCodes.txt"; internal static Instance loggerInstance; private bool autoInvite; private AssetBundle assetBundle; private Mod mod = new Mod(); public static string invokedFind = null; private static object inviteListByCodeCoroutine = null; internal static object waitingCoroutine = null; private static Dictionary<string, UserData> codeCache = new Dictionary<string, UserData>(); public override void OnInitializeMelon() { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown Actions.onMapInitialized += OnMapInitialised; InitFiles(); loggerInstance = ((MelonBase)this).LoggerInstance; assetBundle = AssetBundles.LoadAssetBundleFromStream((MelonMod)(object)this, "AutomaticInviter.Resources.autoinvite"); mod.ModName = ((MelonBase)this).Info.Name; mod.ModVersion = ((MelonBase)this).Info.Version; mod.SetFolder(mod.ModName); mod.AddDescription("Description", "", "Invite a list of people to your park automatically!", new Tags { IsSummary = true }); mod.AddToList("Persistent inviting on open", false, 0, "If disabled, the \"Auto invite on open\" setting will always be off when you enter the gym (Does not currently save when you close your game)", new Tags()); mod.GetFromFile(); UI.instance.UI_Initialized += OnUIInit; loggerInstance.Msg("Initialised."); } public void OnUIInit() { UI.instance.AddMod(mod); } private void InitFiles() { if (!Directory.Exists("UserData")) { Directory.CreateDirectory("UserData"); } if (!Directory.Exists("UserData/AutomaticInviter")) { Directory.CreateDirectory("UserData/AutomaticInviter"); } if (!File.Exists(usernamesPath)) { File.WriteAllText(usernamesPath, string.Empty); } if (!File.Exists(IDsPath)) { File.WriteAllText(IDsPath, string.Empty); } if (!File.Exists(CodesListPath)) { File.WriteAllText(CodesListPath, string.Empty); } UpdateLists(); } private void UpdateLists() { usernameList = Array.Empty<string>(); IDList = Array.Empty<string>(); CodesList = Array.Empty<string>(); usernameList = (File.Exists(usernamesPath) ? File.ReadAllLines(usernamesPath) : Array.Empty<string>()); IDList = (File.Exists(IDsPath) ? File.ReadAllLines(IDsPath) : Array.Empty<string>()); CodesList = (File.Exists(CodesListPath) ? File.ReadAllLines(CodesListPath) : Array.Empty<string>()); } public static void InvitePerson(string masterID, string titleID, string username, OptionsPage optionsPage) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown if ((Object)(object)optionsPage == (Object)null) { loggerInstance.Error("Options page is null!"); return; } UserData val = new UserData(masterID, titleID, username, -1); optionsPage.Initialize(val); optionsPage.inviteToParkButton.onPressed.Invoke(); } public static void InvitePerson(UserData userData, OptionsPage optionsPage) { if ((Object)(object)optionsPage == (Object)null) { loggerInstance.Error("Options page is null!"); return; } optionsPage.Initialize(userData); optionsPage.inviteToParkButton.onPressed.Invoke(); } public static void InvitePersonByFriendCode(string code, FindUser findUser) { foreach (char c in code) { findUser.OnNumberPressed((int)char.GetNumericValue(c)); } invokedFind = code; } private void OnStep(int step) { autoInvite = step == 1; } public override void OnSceneWasUnloaded(int buildIndex, string sceneName) { if (inviteListByCodeCoroutine != null) { MelonCoroutines.Stop(inviteListByCodeCoroutine); inviteListByCodeCoroutine = null; } if (waitingCoroutine != null) { MelonCoroutines.Stop(waitingCoroutine); waitingCoroutine = null; } codeCache = new Dictionary<string, UserData>(); } private void OnMapInitialised(string sceneName) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Unknown result type (might be due to invalid IL or missing references) //IL_0480: Unknown result type (might be due to invalid IL or missing references) //IL_0522: Unknown result type (might be due to invalid IL or missing references) //IL_0540: Unknown result type (might be due to invalid IL or missing references) if (sceneName == "Gym") { if (!(bool)mod.Settings[1].SavedValue) { autoInvite = false; } GameObject gameObject = HostPanel.GetGameObject(); GameObject gameObject2 = ((Component)gameObject.transform.GetChild(1)).gameObject; GameObject obj = Object.Instantiate<GameObject>(gameObject2); obj.transform.SetParent(gameObject2.transform.parent); Vector3 position = gameObject2.transform.position; Quaternion rotation = gameObject2.transform.rotation; obj.transform.position = position - new Vector3(0f, 0.729f, 0f); obj.transform.rotation = rotation; ((TMP_Text)((Component)obj.transform.GetChild(1)).GetComponentInChildren<TextMeshPro>()).text = "Auto invite on open?"; InteractionSlider component = ((Component)obj.transform.GetChild(2).GetChild(8)).GetComponent<InteractionSlider>(); if ((bool)mod.Settings[1].SavedValue) { ((InteractionNumericalBase)component).SetStep(autoInvite ? 1 : 0, false, false); } Action<int>.op_Implicit((Action<int>)delegate(int step) { autoInvite = step == 1; }); UnityAction<int> val = DelegateSupport.ConvertDelegate<UnityAction<int>>((Delegate)new Action<int>(OnStep)); ((UnityEvent<int>)(object)((InteractionNumericalBase)component).onStepReached).AddListener(val); GameObject gameObject3 = ((Component)obj.transform.GetChild(1).GetChild(1)).gameObject; GameObject gameObject4 = ((Component)obj.transform.GetChild(1).GetChild(4)).gameObject; gameObject3.transform.localScale = new Vector3(0.075f, 0.075f, 0.075f); gameObject4.transform.localScale = new Vector3(0.075f, 0.075f, 0.075f); Texture2D val2 = assetBundle.LoadAsset<Texture2D>("cross"); Texture2D val3 = assetBundle.LoadAsset<Texture2D>("checkmark"); ((Renderer)gameObject3.GetComponent<MeshRenderer>()).material.SetTexture("_Texture", (Texture)(object)val2); ((Renderer)gameObject4.GetComponent<MeshRenderer>()).material.SetTexture("_Texture", (Texture)(object)val3); Transform transform = gameObject.transform; transform.position += new Vector3(0f, 0.1f, 0f); Transform child = gameObject.transform.GetChild(0); child.localPosition -= new Vector3(0f, 0.1f, 0f); Transform child2 = gameObject2.transform.GetChild(0).GetChild(0); child2.localPosition += new Vector3(0.02f, 0f, 0f); Transform child3 = gameObject2.transform.GetChild(0).GetChild(0); child3.localScale -= new Vector3(0f, 0.01f, 0f); for (int i = 1; i < gameObject.transform.GetChild(2).GetChild(0).childCount; i++) { Transform child4 = gameObject.transform.GetChild(2).GetChild(0).GetChild(i); child4.localScale = new Vector3(child4.localScale.x, 0.035f, child4.localScale.z); } } if (sceneName != "Park" || !Players.IsHost()) { return; } UpdateLists(); GameObject gameObject5 = SettingsScreen.GetGameObject(); if ((Object)(object)gameObject5 == (Object)null) { loggerInstance.Error("Cannot find settings page object!"); return; } OptionsPage options = gameObject5.GetComponent<OptionsPage>(); if ((Object)(object)options == (Object)null) { loggerInstance.Error("Cannot find options page!"); return; } if (autoInvite) { loggerInstance.Msg("Inviting people..."); if (usernameList.Length >= 1) { InviteListByUsername(usernameList, options); } if (IDList.Length >= 1) { InviteListByMasterID(IDList, options); } if (CodesList.Length >= 1 && inviteListByCodeCoroutine == null) { inviteListByCodeCoroutine = MelonCoroutines.Start(InviteListByFriendCode(CodesList, options)); } loggerInstance.Msg("People invited!"); } GameObject val4 = Object.Instantiate<GameObject>(FloatingButton.GetGameObject()); val4.transform.position = new Vector3(-29.2742f, -1.6354f, -7.015f); val4.transform.rotation = Quaternion.Euler(0f, 90f, 0f); ((TMP_Text)((Component)val4.transform.GetChild(1)).GetComponent<TextMeshPro>()).text = "AutoInvite"; Object.Destroy((Object)(object)((Component)val4.transform.GetChild(2)).gameObject); GameObject obj2 = Create.NewButton(); ((Object)obj2).name = "InviteListButton"; ((Component)obj2.transform.GetChild(0)).gameObject.GetComponent<InteractionButton>().onPressed.AddListener(UnityAction.op_Implicit((Action)delegate { UpdateLists(); loggerInstance.Msg("Inviting people..."); if (usernameList.Length >= 1) { InviteListByUsername(usernameList, options); } if (IDList.Length >= 1) { InviteListByMasterID(IDList, options); } if (CodesList.Length >= 1 && inviteListByCodeCoroutine == null) { inviteListByCodeCoroutine = MelonCoroutines.Start(InviteListByFriendCode(CodesList, options)); } loggerInstance.Msg("People invited!"); })); obj2.transform.SetParent(val4.transform); obj2.transform.localPosition = new Vector3(0.0326f, 0.0054f, 0.0458f); obj2.transform.rotation = Quaternion.Euler(0f, 180f, 90f); } public static void InviteListByUsername(string[] usernames, OptionsPage optionsPage = null) { if (usernames.Length < 1) { loggerInstance.Error("Username list is empty!"); return; } if ((Object)(object)optionsPage == (Object)null) { GameObject gameObject = SettingsScreen.GetGameObject(); if ((Object)(object)gameObject == (Object)null) { loggerInstance.Error("Cannot find settings page object!"); return; } optionsPage = gameObject.GetComponent<OptionsPage>(); if ((Object)(object)optionsPage == (Object)null) { loggerInstance.Error("Cannot find options page!"); return; } } List<GetFriendsResult> confirmedFriends = FriendHandler.ConfirmedFriends; foreach (string username in usernames) { IEnumerable<GetFriendsResult> enumerable = ((IEnumerable<GetFriendsResult>)confirmedFriends.ToArray()).Where((GetFriendsResult friend) => ((UserSearchResult)friend).PublicName == username || Regex.Replace(((UserSearchResult)friend).PublicName, "<#[0-9A-Fa-f]{3,6}>", "") == username); if (enumerable.Count() > 1) { loggerInstance.Warning("Multiple friends found with username \"" + username + ",\" please use their ID instead!"); continue; } if (enumerable.Count() == 0) { loggerInstance.Warning("No friends with username \"" + username + "\""); continue; } foreach (GetFriendsResult friend2 in enumerable) { if (((IEnumerable<Player>)Players.GetAllPlayers().ToArray()).Where((Player player) => player.Data.GeneralData.PlayFabMasterId == ((UserSearchResult)friend2).PlayFabMasterId).Count() != 0) { loggerInstance.Msg("Inviting " + ((UserSearchResult)friend2).PublicName); InvitePerson(((UserSearchResult)friend2).PlayFabMasterId, ((UserSearchResult)friend2).PlayFabTitleId, ((UserSearchResult)friend2).PublicName, optionsPage); } } } } public static void InviteListByMasterID(string[] IDs, OptionsPage optionsPage = null) { if (IDs.Length < 1) { loggerInstance.Error("ID list is empty!"); return; } if ((Object)(object)optionsPage == (Object)null) { GameObject gameObject = SettingsScreen.GetGameObject(); if ((Object)(object)gameObject == (Object)null) { loggerInstance.Error("Cannot find settings page object!"); return; } optionsPage = gameObject.GetComponent<OptionsPage>(); if ((Object)(object)optionsPage == (Object)null) { loggerInstance.Error("Cannot find options page!"); return; } } List<GetFriendsResult> confirmedFriends = FriendHandler.ConfirmedFriends; foreach (string masterID in IDs) { if (((IEnumerable<Player>)Players.GetAllPlayers().ToArray()).Where((Player player) => player.Data.GeneralData.PlayFabMasterId == masterID).Count() != 0) { break; } IEnumerable<GetFriendsResult> source = ((IEnumerable<GetFriendsResult>)confirmedFriends.ToArray()).Where((GetFriendsResult friend) => ((UserSearchResult)friend).PlayFabMasterId == masterID); if (source.Count() == 0) { loggerInstance.Msg("No friends with ID \"" + masterID + "\""); UserData val = UserDataManager.FetchUserData(masterID); if (val != null) { loggerInstance.Msg("Inviting ID " + val.playFabMasterId + " - " + val.publicName); InvitePerson(val.playFabMasterId, val.playFabTitleId, val.publicName, optionsPage); } else { loggerInstance.Warning("Could not find user - " + masterID); } } else { GetFriendsResult val2 = source.First(); loggerInstance.Msg("Inviting ID " + ((UserSearchResult)val2).PlayFabMasterId + " - " + ((UserSearchResult)val2).PublicName); InvitePerson(((UserSearchResult)val2).PlayFabMasterId, ((UserSearchResult)val2).PlayFabTitleId, ((UserSearchResult)val2).PublicName, optionsPage); } } } [IteratorStateMachine(typeof(<InviteListByFriendCode>d__26))] public static IEnumerator InviteListByFriendCode(string[] codes, OptionsPage optionsPage = null) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <InviteListByFriendCode>d__26(0) { codes = codes, optionsPage = optionsPage }; } [IteratorStateMachine(typeof(<WaitForUserData>d__27))] internal static IEnumerator WaitForUserData(PlayerTag playerTag, OptionsPage options, string code) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitForUserData>d__27(0) { playerTag = playerTag, options = options, code = code }; } } [HarmonyPatch(typeof(FindUser), "OnDoneFindingUser")] internal class FindUserPatch { private static void Postfix(ref FindUser __instance) { if (Core.invokedFind == null) { return; } GameObject gameObject = SettingsScreen.GetGameObject(); if ((Object)(object)gameObject == (Object)null) { Core.loggerInstance.Error("Cannot find settings page object!"); return; } OptionsPage component = gameObject.GetComponent<OptionsPage>(); if ((Object)(object)component == (Object)null) { Core.loggerInstance.Error("Cannot find options page!"); return; } if (__instance.searchStatusText.text != "No ID match found") { Core.waitingCoroutine = MelonCoroutines.Start(Core.WaitForUserData(__instance.PlayerTag, component, Core.invokedFind)); } else { Core.loggerInstance.Warning("No user found with friend code " + Core.invokedFind); } Core.invokedFind = null; } } }