Decompiled source of RareMagicPortal v2.7.2
plugins/RareMagicPortal.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Numerics.Hashing; using System.Reflection; using System.Reflection.Emit; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using FxResources.System.ValueTuple; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using LocalizationManager; using Microsoft.CodeAnalysis; using ServerSync; using StatusEffectManager; using TMPro; using UnityEngine; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; [assembly: AssemblyFileVersion("2.7.2")] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: ComVisible(false)] [assembly: AssemblyTrademark("")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyProduct("MagicPortalFluid")] [assembly: AssemblyCompany("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyDescription("")] [assembly: AssemblyTitle("MagicPortalFluid")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.7.2.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<c157bb49-d1f3-4c92-9a86-26f3861068d4>Embedded] internal sealed class <c157bb49-d1f3-4c92-9a86-26f3861068d4>EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [<c157bb49-d1f3-4c92-9a86-26f3861068d4>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [CompilerGenerated] internal sealed class <f04ec549-5ca7-4107-a39d-53aadf15d38b>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <f04ec549-5ca7-4107-a39d-53aadf15d38b>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <f04ec549-5ca7-4107-a39d-53aadf15d38b>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [<c157bb49-d1f3-4c92-9a86-26f3861068d4>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContextAttribute : Attribute { public readonly byte Flag; public <e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContextAttribute(byte P_0) { Flag = P_0; } } } [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] internal class RecipeData { public string name; public string craftingStation; public int minStationLevel; public int amount; public bool disabled; public List<string> reqs = new List<string>(); } namespace RareMagicPortal { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] internal class functions { public static void GetAllMaterials() { Material[] array = Resources.FindObjectsOfTypeAll<Material>(); MagicPortalFluid.originalMaterials = new Dictionary<string, Material>(); Material[] array2 = array; foreach (Material val in array2) { MagicPortalFluid.originalMaterials[((Object)val).name] = val; } } internal static void ServerZDOymlUpdate(int Colorint, string Portalname) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown if (!ZNet.instance.IsServer()) { if (MagicPortalFluid.JustSent > 0) { MagicPortalFluid.JustSent++; return; } ZPackage val = new ZPackage(); val.Write(Portalname + "," + Colorint); MagicPortalFluid.RareMagicPortal.LogInfo((object)$"Sending the Server a update for {Portalname} with Color {Colorint}"); MagicPortalFluid.JustSent = 1; ZRoutedRpc.instance.InvokeRoutedRPC(ZRoutedRpc.instance.GetServerPeerID(), "RequestServerAnnouncementRMP", new object[1] { val }); } } public static void RPC_RequestServerAnnouncementRMP(long sender, ZPackage pkg) { if (ZNet.instance.IsServer() && pkg != null && pkg.Size() > 0) { ZNetPeer peer = ZNet.instance.GetPeer(sender); if (peer != null) { string playerName = peer.m_playerName; string[] array = pkg.ReadString().Split(new char[1] { ',' }); string text = array[0]; int num = Convert.ToInt32(array[1]); MagicPortalFluid.RareMagicPortal.LogInfo((object)$"Server has recieved a YML update from {playerName} for {text} with Color {num}"); PortalColorLogic.updateYmltoColorChange(text, num); } } } internal static string GetColorHtmlString(Color color) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (color.a != 1f) { return ColorUtility.ToHtmlStringRGBA(color); } return ColorUtility.ToHtmlStringRGB(color); } internal static string HandlePortalClick() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) Minimap instance = Minimap.instance; List<PinData> pins = instance.m_pins; Vector3 val = instance.ScreenToWorldPoint(Input.mousePosition); float num = instance.m_removeRadius * (instance.m_largeZoom * 2f); MagicPortalFluid.checkiftagisPortal = ""; PinData val2 = null; float num2 = 999999f; foreach (PinData item in pins) { float num3 = Utils.DistanceXZ(val, item.m_pos); if (num3 < num && (num3 < num2 || val2 == null)) { val2 = item; num2 = num3; } } if (!string.IsNullOrEmpty(val2.m_name)) { MagicPortalFluid.checkiftagisPortal = val2.m_name; } if (!(((Object)val2.m_icon).name == "") && !(((Object)val2.m_icon).name == "TargetPortalIcon")) { MagicPortalFluid.checkiftagisPortal = null; } if (MagicPortalFluid.checkiftagisPortal.Contains("$hud") || MagicPortalFluid.checkiftagisPortal.Contains("Day ")) { MagicPortalFluid.checkiftagisPortal = null; } return MagicPortalFluid.checkiftagisPortal; } } [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] internal class PortalColorLogic { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] internal enum PortalColor { Yellow = 1, Red = 2, Green = 3, Blue = 4, Purple = 5, Tan = 6, Cyan = 7, Orange = 8, White = 20, Black = 21, Gold = 22 } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] [HarmonyPatch(typeof(ZNet), "Shutdown")] internal class PatchZNetDisconnect { internal static bool Prefix() { MagicPortalFluid.RareMagicPortal.LogInfo((object)"Logoff? Save text file, don't delete"); ((MonoBehaviour)MagicPortalFluid.context).StopCoroutine(MagicPortalFluid.RemovedDestroyedTeleportWorldsCoroutine()); MagicPortalFluid.NoMoreLoading = true; MagicPortalFluid.JustWaitforInventory = true; if (ZNet.instance.IsServer() && ZNet.instance.IsDedicated() && MagicPortalFluid.RiskyYMLSave.Value) { <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer = new <e7bba29c-a42b-46ec-ac53-439b82edf48e>SerializerBuilder().Build(); string contents = MagicPortalFluid.WelcomeString + Environment.NewLine + <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer.Serialize(PortalN); MagicPortalFluid.JustWrote = 1; File.WriteAllText(MagicPortalFluid.YMLCurrentFile, contents); string text = ""; foreach (string item in File.ReadLines(MagicPortalFluid.YMLCurrentFile)) { text = text + item + Environment.NewLine; if (item.Contains("Admin_only_Access")) { text += Environment.NewLine; } } File.WriteAllText(MagicPortalFluid.YMLCurrentFile, text); MagicPortalFluid.JustWrote = 2; } return true; } } [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [HarmonyPatch(typeof(TeleportWorld))] private class TeleportWorldPatchRMP { [HarmonyPatch("Awake")] [HarmonyPostfix] private static void TeleportWorldAwakepRfixRMP(ref TeleportWorld __instance) { if (!Object.op_Implicit((Object)(object)__instance)) { return; } if (!Object.op_Implicit((Object)(object)__instance.m_proximityRoot)) { __instance.m_proximityRoot = ((Component)__instance).transform; } if (!Object.op_Implicit((Object)(object)__instance.m_target_found)) { GameObject gameObject = ((Component)((Component)__instance).gameObject.transform.Find("_target_found")).gameObject; gameObject.SetActive(false); __instance.m_target_found = gameObject.AddComponent<EffectFade>(); gameObject.SetActive(true); } MagicPortalFluid._teleportWorldDataCache.Add(__instance, new TeleportWorldDataRMP(__instance)); try { if (__instance.m_nview.m_zdo.GetString(MagicPortalFluid._portalBiomeColorHashCode, "") == "skip") { RMP.LogDebug((object)"Portal BiomeColor skip Awake"); MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value); value.BiomeColor = "skip"; } } catch { } } [HarmonyPatch("UpdatePortal")] [HarmonyPriority(200)] [HarmonyPostfix] private static void TeleportWorldUpdatePortalPostfixRMP(ref TeleportWorld __instance) { //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)__instance) || !Object.op_Implicit((Object)(object)__instance.m_nview) || __instance.m_nview.m_zdo == null) { return; } try { MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value); if (((Character)Player.m_localPlayer).m_seman.HaveStatusEffect("yippeTele")) { if (MagicPortalFluid.PortalDrinkColor.Value == "Rainbow") { Color yellow = Color.yellow; Random random = new Random(); PortalColor src = (PortalColor)Enum.Parse(typeof(PortalColor), currentRainbow); int num = random.Next(1, 12); PortalColor src2 = src.Next(); for (int i = 1; i < num; i++) { src2.Next(); } currentRainbow = src2.ToString(); yellow = PortalColors[src2.ToString()].HexName; rainbowWait = 0; if (yellow != value.OldColor) { value.TargetColor = yellow; SetTeleportWorldColors(value, SetcolorTarget: true); } } else if (MagicPortalFluid.PortalDrinkColor.Value == "Rainbow2") { if ((Object)(object)CheatSwordColor == (Object)null) { RMP.LogInfo((object)"Set cheatsword"); CheatSwordColor = ObjectDB.instance.GetItemPrefab("SwordCheat").GetComponentInChildren<ParticleSystem>(true); } if ((Object)(object)CheatSwordColor == (Object)null) { RMP.LogInfo((object)"Cheatsword is null"); } MainModule main = CheatSwordColor.main; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; RMP.LogInfo((object)"Set holdColor"); ParticleSystem obj = value.BlueFlames[0]; ((Component)obj).GetComponent<MainModule>(); ColorOverLifetimeModule component = ((Component)obj).GetComponent<ColorOverLifetimeModule>(); ((ColorOverLifetimeModule)(ref component)).color = startColor; ((Renderer)((Component)obj).GetComponent<ParticleSystemRenderer>()).material = MagicPortalFluid.originalMaterials["flame"]; } else { value.TargetColor = PortalColors[MagicPortalFluid.PortalDrinkColor.Value].HexName; SetTeleportWorldColors(value); } return; } string @string = __instance.m_nview.m_zdo.GetString("tag", ""); CrystalandKeyLogicColor(out var currentColor, out var currentColorHex, out var _, @string, __instance); if (MagicPortalFluid.ConfigUseBiomeColors.Value) { if (Enumerable.Contains(@string, NameIdentifier) && @string.Count((char f) => f == NameIdentifier) > 1) { @string = @string[..@string.IndexOf(NameIdentifier)]; string text = @string + NameIdentifier + PortalColors[currentColor].Pos; __instance.SetText(text); } if (value.BiomeColor != "skip" && value.BiomeColor != "") { if (currentColorHex != value.OldColor) { value.TargetColor = currentColorHex; SetTeleportWorldColors(value, SetcolorTarget: true); } return; } } if (currentColorHex != value.LinkColor || currentColorHex != value.OldColor) { value.TargetColor = currentColorHex; value.LinkColor = currentColorHex; SetTeleportWorldColors(value, SetcolorTarget: true); } } catch { } } } [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [HarmonyPriority(600)] [HarmonyPatch(typeof(TeleportWorld), "Interact")] public static class PortalCheckOutside { internal static bool Prefix(TeleportWorld __instance, Humanoid human, bool hold) { //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) if (hold) { return false; } if (Chainloader.PluginInfos.ContainsKey("com.sweetgiorni.anyportal")) { return true; } if (__instance.m_nview.IsValid()) { Piece val = null; val = ((Component)__instance).GetComponent<Piece>(); string text = __instance.m_nview.m_zdo.GetString("tag", ""); BiomeStringTempHolder = ""; if (Enumerable.Contains(text, NameIdentifier)) { BiomeStringTempHolder = text; text = text[..text.IndexOf(NameIdentifier)]; __instance.SetText(text); } if ((Object)(object)val != (Object)null && text != "" && text != "Empty tag") { Player localPlayer = Player.m_localPlayer; bool flag = false; if (val.m_creator == localPlayer.GetPlayerID()) { flag = true; } KeyboardShortcut value = MagicPortalFluid.portalRMPKEY.Value; if (Input.GetKey(((KeyboardShortcut)(ref value)).MainKey)) { value = MagicPortalFluid.portalRMPKEY.Value; if (((KeyboardShortcut)(ref value)).Modifiers.All((Func<KeyCode, bool>)Input.GetKey) && (MagicPortalFluid.isAdmin || (flag && !MagicPortalFluid.ConfigEnableCrystalsNKeys.Value))) { MagicPortalFluid.Globaliscreator = flag; int num = CrystalandKeyLogicColor(out var currentColor, out var _, out var nextcolor, text, __instance); num = PortalColors[nextcolor].Pos; Color item = PortalColors[nextcolor].HexName; if (MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value2)) { value2.TargetColor = item; RMP.LogInfo((object)("setting color " + currentColor)); value2.BiomeColor = "skip"; if (Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.targetportal")) { BiomeStringTempHolder = ""; } value2.LinkColor = item; SetTeleportWorldColors(value2, SetcolorTarget: true); } __instance.m_nview.m_zdo.Set(MagicPortalFluid._teleportWorldColorHashCode, Utils.ColorToVec3(item)); ZDO zdo = __instance.m_nview.m_zdo; int portalLastColoredByHashCode = MagicPortalFluid._portalLastColoredByHashCode; Player localPlayer2 = Player.m_localPlayer; zdo.Set(portalLastColoredByHashCode, (localPlayer2 != null) ? localPlayer2.GetPlayerID() : 0); __instance.m_nview.m_zdo.Set(MagicPortalFluid._portalBiomeColorHashCode, "skip"); updateYmltoColorChange(text, num, value2.BiomeColor); num = CrystalandKeyLogicColor(out var _, out var _, out var _, text, __instance); return false; } } if (flag || (!flag && !MagicPortalFluid.ConfigCreatorLock.Value) || localPlayer.m_noPlacementCost) { return true; } ((Character)human).Message((MessageType)2, "$rmp_onlyownercanchange", 0, (Sprite)null); return false; } return true; } return true; } internal static void Postfix(TeleportWorld __instance, Humanoid human, bool hold) { if (!hold && __instance.m_nview.IsValid() && BiomeStringTempHolder != "") { __instance.SetText(BiomeStringTempHolder); RMP.LogDebug((object)"BiomeHolder CopiedBack name"); } } } [HarmonyPatch(typeof(TeleportWorld), "TargetFound")] [HarmonyPriority(600)] [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] public static class TeleportHaveTargetFix { private static string HoldMeDaddy = ""; private static int count3 = 0; private static void Prefix(ref TeleportWorld __instance) { string @string = __instance.m_nview.m_zdo.GetString("tag", ""); HoldMeDaddy = ""; if (Enumerable.Contains(@string, NameIdentifier)) { HoldMeDaddy = @string; @string = @string[..@string.IndexOf(NameIdentifier)]; __instance.SetText(@string); } } [HarmonyPriority(200)] private static void Postfix(ref TeleportWorld __instance, bool __result) { if (HoldMeDaddy != "" && MagicPortalFluid.TargetPortalLoaded) { __instance.SetText(HoldMeDaddy); } } } [HarmonyPatch(typeof(TeleportWorld), "GetHoverText")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public static class TeleportWorldGetHoverTextPostfixRMP { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] private static void Postfix(ref TeleportWorld __instance, ref string __result) { //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_080c: Unknown result type (might be due to invalid IL or missing references) //IL_0823: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_05af: Unknown result type (might be due to invalid IL or missing references) //IL_05b4: Unknown result type (might be due to invalid IL or missing references) //IL_05b8: Unknown result type (might be due to invalid IL or missing references) //IL_0696: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06cb: Unknown result type (might be due to invalid IL or missing references) //IL_06e2: Unknown result type (might be due to invalid IL or missing references) //IL_0702: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_05f2: Unknown result type (might be due to invalid IL or missing references) //IL_0622: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Unknown result type (might be due to invalid IL or missing references) //IL_065e: Unknown result type (might be due to invalid IL or missing references) //IL_07ab: Unknown result type (might be due to invalid IL or missing references) //IL_07c2: Unknown result type (might be due to invalid IL or missing references) //IL_0750: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)__instance) || MagicPortalFluid.NoMoreLoading || MagicPortalFluid.WaitSomeMore) { return; } Piece component = ((Component)__instance).GetComponent<Piece>(); Player localPlayer = Player.m_localPlayer; bool flag = false; if (component.m_creator == localPlayer.GetPlayerID()) { flag = true; } string text = __instance.m_nview.m_zdo.GetString("tag", ""); int num = 1; string currentColor = "Default"; num = CrystalandKeyLogicColor(out currentColor, out var currentColorHex, out var nextcolor, text, __instance); string text2 = ""; if (Enumerable.Contains(text, NameIdentifier)) { text2 = text.Substring(text.IndexOf(NameIdentifier)); int num2 = __result.IndexOf(text2); if (num2 >= 0) { __result = __result.Remove(num2, text2.Length); } text = text[..text.IndexOf(NameIdentifier)]; } if (currentColor == MagicPortalFluid.FreePassageColor.Value && !MagicPortalFluid.ConfigUseBiomeColors.Value && !PortalN.Portals[text].Free_Passage && MagicPortalFluid.JustSent == 0) { updateYmltoColorChange(text, PortalColors[MagicPortalFluid.FreePassageColor.Value].Pos); } if (text == "" && reloaded) { RMP.LogInfo((object)"Updating Blank Portals"); updateYmltoColorChange("", num); reloaded = false; } Color val = currentColorHex; string text3 = currentColor + " Crystal Portal"; if (text == "" && currentColor != MagicPortalFluid.CrystalKeyDefaultColor.Value && MagicPortalFluid.JustSent == 0) { if (MagicPortalFluid.CrystalKeyDefaultColor.Value == "None" || MagicPortalFluid.CrystalKeyDefaultColor.Value == "none") { num = 1; } else { try { num = PortalColors[MagicPortalFluid.CrystalKeyDefaultColor.Value].Pos; } catch { RMP.LogWarning((object)("DefaultPortalColor " + MagicPortalFluid.CrystalKeyDefaultColor.Value + " is not an option,this will cause repeating network traffic on no name portals")); } } } Biome currentBiome = localPlayer.GetCurrentBiome(); string Biome = ((object)(Biome)(ref currentBiome)).ToString(); if (!Object.op_Implicit((Object)(object)__instance.m_nview) || __instance.m_nview.m_zdo == null || __instance.m_nview.m_zdo.GetString(MagicPortalFluid._portalBiomeHashCode, "") == "") { if (MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value)) { value.Biome = Biome; if (MagicPortalFluid.ConfigUseBiomeColors.Value) { List<string> list = Array.FindAll(MagicPortalFluid.BiomeRepColors.Value.Split(new char[1] { ',' }), (string s) => s.Contains(Biome))[0].Split(new char[1] { ':' }).ToList(); foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor in PortalColors) { if (portalColor.Key == list[1]) { value.BiomeColor = portalColor.Key; _ = portalColor.Value; text2 = NameIdentifier.ToString() + portalColor.Value.Item2; } } } value.TargetColor = val; SetTeleportWorldColors(value, SetcolorTarget: true); __instance.m_nview.m_zdo.Set(MagicPortalFluid._teleportWorldColorHashCode, Utils.ColorToVec3(val)); ZDO zdo = __instance.m_nview.m_zdo; int portalLastColoredByHashCode = MagicPortalFluid._portalLastColoredByHashCode; Player localPlayer2 = Player.m_localPlayer; zdo.Set(portalLastColoredByHashCode, (localPlayer2 != null) ? localPlayer2.GetPlayerID() : 0); __instance.m_nview.m_zdo.Set(MagicPortalFluid._portalBiomeHashCode, Biome); RMP.LogInfo((object)"Setting ZDO Color For First Time"); } if (text == "") { updateYmltoColorChange("", num); } } bool flag2 = false; if (MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value2) && MagicPortalFluid.ConfigUseBiomeColors.Value && (text2 == "" || reloaded) && !(value2.BiomeColor == "skip") && !(__instance.m_nview.m_zdo.GetString(MagicPortalFluid._portalBiomeColorHashCode, "") == "skip")) { List<string> list2 = Array.FindAll(MagicPortalFluid.BiomeRepColors.Value.Split(new char[1] { ',' }), (string s) => s.Contains(Biome))[0].Split(new char[1] { ':' }).ToList(); foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor2 in PortalColors) { if (portalColor2.Key == list2[1]) { __instance.m_nview.m_zdo.Set(MagicPortalFluid._portalBiomeColorHashCode, portalColor2.Key); value2.BiomeColor = portalColor2.Key; if (MagicPortalFluid.TargetPortalLoaded) { text2 = NameIdentifier.ToString() + portalColor2.Value.Item2; flag2 = true; } } } } if (text != "" && text != "Empty tag") { if (MagicPortalFluid.isAdmin || (flag && !MagicPortalFluid.ConfigEnableCrystalsNKeys.Value)) { KeyboardShortcut value3 = MagicPortalFluid.portalRMPKEY.Value; if ((int)((KeyboardShortcut)(ref value3)).MainKey == 0) { return; } if (MagicPortalFluid.ConfigEnableCrystalsNKeys.Value) { object[] obj2 = new object[9] { __result, currentColor, null, null, null, null, null, null, null }; value3 = MagicPortalFluid.portalRMPKEY.Value; obj2[2] = ((object)(KeyboardShortcut)(ref value3)).ToString() + " + E"; obj2[3] = nextcolor; obj2[4] = 15; obj2[5] = "#" + ColorUtility.ToHtmlStringRGB(Color.yellow); obj2[6] = text3; obj2[7] = "#" + ColorUtility.ToHtmlStringRGB(val); obj2[8] = "#" + ColorUtility.ToHtmlStringRGB(PortalColors[nextcolor].HexName); __result = string.Format("{0}\n<size={4}>[<color={5}>{2}</color>] Change <color={7}>Portal</color>[{1}] Crystal to: [<color={8}>{3}</color>]</size>\n<size={4}>{6}</size>", obj2); } else { object[] obj3 = new object[8] { __result, currentColor, null, null, null, null, null, null }; value3 = MagicPortalFluid.portalRMPKEY.Value; obj3[2] = ((object)(KeyboardShortcut)(ref value3)).ToString() + " + E"; obj3[3] = nextcolor; obj3[4] = 15; obj3[5] = "#" + ColorUtility.ToHtmlStringRGB(Color.yellow); obj3[6] = "#" + ColorUtility.ToHtmlStringRGB(val); obj3[7] = "#" + ColorUtility.ToHtmlStringRGB(PortalColors[nextcolor].HexName); __result = string.Format("{0}\n<size={4}>[<color={5}>{2}</color>] Change <color={6}>Portal</color>[{1}] Color to: [<color={7}>{3}</color>] </size>", obj3); } } else if (MagicPortalFluid.ConfigEnableCrystalsNKeys.Value) { __result = string.Format("{0}\n<size={2}><color={5}>{1} Portal</color></size>\n<size={2}>{4}</size>", __result, currentColor, 15, "#" + ColorUtility.ToHtmlStringRGB(Color.yellow), text3, "#" + ColorUtility.ToHtmlStringRGB(val)); } else { __result = string.Format("{0}\n<size={2}><color={4}>{1} Portal</color></size>", __result, currentColor, 15, "#" + ColorUtility.ToHtmlStringRGB(Color.yellow), "#" + ColorUtility.ToHtmlStringRGB(val)); } } else { string text4 = "Please name Portal, "; string text5 = " Color "; __result = string.Format("{0}\n<size={1}><color={3}>{2}{5}</color><color={3}>{6}</color></size>", __result, 15, text4, "#" + ColorUtility.ToHtmlStringRGB(Color.yellow), "#" + ColorUtility.ToHtmlStringRGB(val), text5, currentColor); } string text6 = text + text2; if (__instance.m_nview.m_zdo.GetString("tag", "") != text6 && flag2) { __instance.SetText(text6); } } } [HarmonyPatch(typeof(Player), "Update")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public static class UpdateRemoveItem { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] private static void Prefix(ref Player __instance) { if (inventoryRemove && ((Character)__instance).m_nview.IsValid() && ((Character)__instance).m_nview.IsOwner()) { ItemData item = ((Humanoid)__instance).m_inventory.GetItem(removeItems.Last().Key, -1, false); if (item == null) { RMP.LogInfo((object)"item is null"); } ((Humanoid)__instance).m_inventory.RemoveItem(item, removeItems.Last().Value); removeItems.Remove(removeItems.Last().Key); inventoryRemove = false; } } } public static readonly ManualLogSource RMP = Logger.CreateLogSource("RareMagicPortal"); private static Color m_colorTargetfound = new Color(0.7490196f, 0.5882353f, 0f, 25f); private static Color lightcolor = new Color(1f, 20f / 51f, 0f, 1f); public static Color flamesstart = new Color(1f, 0.7607843f, 2f / 15f, 1f); public static Color flamesend = new Color(1f, 0f, 0f, 1f); public static Color Gold = new Color(1f, 43f / 51f, 0f, 1f); public static Color Purple = new Color(0.41960785f, 21f / 85f, 32f / 51f, 1f); public static Color Tan = new Color(0.8235294f, 0.7058824f, 28f / 51f, 1f); public static Color Brown = new Color(0.75686276f, 23f / 85f, 0.07450981f, 1f); public static Color Orange = new Color(0.8f, 1f / 3f, 0f, 1f); public static Color Cornsilk = new Color(1f, 0.972549f, 44f / 51f, 1f); public static Color Yellow2 = new Color(0.54509807f, 0.5019608f, 0f, 1f); internal static PortalName PortalN; private static int waitloop = 5; private static int rainbowWait = 0; private static string currentRainbow = "Yellow"; public static char NameIdentifier = '▲'; private static string BiomeStringTempHolder = ""; internal static bool reloaded = false; internal static Transform CheatswordColor; internal static bool inventoryRemove = false; internal static Dictionary<string, int> removeItems = new Dictionary<string, int>(); public static ParticleSystem CheatSwordColor = null; [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(new byte[] { 1, 1, 0, 1, 1 })] internal static Dictionary<string, (Color HexName, int Pos, bool Enabled, string NextColor, string MessageText)> PortalColors = new Dictionary<string, (Color, int, bool, string, string)> { { "Yellow", (Yellow2, 1, false, "Red", "Red Crystal Portal") }, { "Red", (Color.red, 2, false, "Green", "Red Crystal Portal") }, { "Green", (Color.green, 3, false, "Blue", "Red Crystal Portal") }, { "Blue", (Color.blue, 4, false, "Purple", "Red Crystal Portal") }, { "Purple", (Purple, 5, false, "Tan", "Red Crystal Portal") }, { "Tan", (Cornsilk, 6, false, "Cyan", "Red Crystal Portal") }, { "Cyan", (Color.cyan, 7, false, "Orange", "Red Crystal Portal") }, { "Orange", (Orange, 8, false, "White", "Red Crystal Portal") }, { "White", (Color.white, 20, false, "Black", "Red Crystal Portal") }, { "Black", (Color.black, 21, false, "Gold", "Red Crystal Portal") }, { "Gold", (Gold, 22, false, "Yellow", "Red Crystal Portal") } }; internal static Dictionary<string, int> CrystalCount = new Dictionary<string, int>(); internal static Dictionary<string, int> KeyCount = new Dictionary<string, int>(); public static void reloadcolors() { CrystalCount.Clear(); KeyCount.Clear(); foreach (string item in PortalColors.Keys.ToList()) { (Color, int, bool, string, string) value = PortalColors[item]; value.Item3 = false; PortalColors[item] = value; } foreach (string item2 in MagicPortalFluid.EnabledColors.Value.Split(new char[1] { ',' }).ToList()) { if (PortalColors.ContainsKey(item2)) { (Color, int, bool, string, string) value2 = PortalColors[item2]; value2.Item3 = true; PortalColors[item2] = value2; } } foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor in PortalColors) { CrystalCount.Add(portalColor.Key, 0); KeyCount.Add(portalColor.Key, 0); } foreach (KeyValuePair<string, (Color, int, bool, string, string)> item3 in PortalColors.ToList()) { if (!item3.Value.Item3) { continue; } string key = item3.Key; (Color, int, bool, string, string) value3 = item3.Value; string text = ((PortalColor)Enum.Parse(typeof(PortalColor), key)).Next().ToString(); bool flag = false; int num = 0; while (!flag) { foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor2 in PortalColors) { if (portalColor2.Key == text) { if (portalColor2.Value.Item3) { flag = true; value3.Item4 = text; } else { key = portalColor2.Key; text = ((PortalColor)Enum.Parse(typeof(PortalColor), key)).Next().ToString(); } break; } } num++; if (num > 30) { RMP.LogWarning((object)"NextColor not found"); break; } } PortalColors[item3.Key] = value3; } } internal static void BiomeLogicCheck(out string currentColor, out Color currentColorHex, out string nextcolor, out int Pos, string PortalName = "", bool skip = false) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) string text = ""; currentColor = "skip"; currentColorHex = Gold; nextcolor = "White"; Pos = 0; if (Enumerable.Contains(PortalName, NameIdentifier)) { text = PortalName.Substring(PortalName.IndexOf(NameIdentifier)); PortalName = PortalName[..PortalName.IndexOf(NameIdentifier)]; } if (text != "" && MagicPortalFluid.ConfigUseBiomeColors.Value && !skip) { text = text.Remove(0, 1); currentColor = ((PortalColor)int.Parse(text)).ToString(); currentColorHex = PortalColors[currentColor].HexName; nextcolor = PortalColors[currentColor].NextColor; Pos = PortalColors[currentColor].Pos; } } internal static int CrystalandKeyLogicColor(out string currentColor, out Color currentColorHex, out string nextcolor, string PortalName = "", TeleportWorld __instance = null, int overrideInt = 0) { //IL_064f: Unknown result type (might be due to invalid IL or missing references) //IL_0654: Unknown result type (might be due to invalid IL or missing references) //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_0580: Unknown result type (might be due to invalid IL or missing references) //IL_0585: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0351: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0468: Unknown result type (might be due to invalid IL or missing references) //IL_046d: Unknown result type (might be due to invalid IL or missing references) //IL_04c8: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_03dc: Unknown result type (might be due to invalid IL or missing references) //IL_03e1: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) string text = ""; string text2 = ""; if (Enumerable.Contains(PortalName, NameIdentifier)) { text = PortalName.Substring(PortalName.IndexOf(NameIdentifier)); PortalName = PortalName[..PortalName.IndexOf(NameIdentifier)]; } if ((Object)(object)__instance != (Object)null && text == "" && __instance.m_nview.m_zdo.GetString(MagicPortalFluid._portalBiomeColorHashCode, "") != "skip") { text2 = __instance.m_nview.m_zdo.GetString(MagicPortalFluid._portalBiomeColorHashCode, ""); } _ = MagicPortalFluid.ConfigCrystalsConsumable.Value; bool flag = false; bool flag2 = false; if (!PortalN.Portals.ContainsKey(PortalName)) { WritetoYML(PortalName); } flag = PortalN.Portals[PortalName].Admin_only_Access; flag2 = PortalN.Portals[PortalName].Free_Passage; Dictionary<string, int> portal_Crystal_Cost = PortalN.Portals[PortalName].Portal_Crystal_Cost; Dictionary<string, bool> portal_Key = PortalN.Portals[PortalName].Portal_Key; _ = PortalN.Portals[PortalName].BiomeColor; if (PortalName != "" && PortalName != "Empty tag") { if (flag && MagicPortalFluid.AdminColor.Value != "none") { currentColor = MagicPortalFluid.AdminColor.Value; currentColorHex = PortalColors[MagicPortalFluid.AdminColor.Value].HexName; nextcolor = PortalColors[MagicPortalFluid.AdminColor.Value].NextColor; return PortalColors[currentColor].Pos; } if (flag2 && MagicPortalFluid.FreePassageColor.Value != "none" && text != "" && text2 != "") { currentColor = MagicPortalFluid.FreePassageColor.Value; currentColorHex = PortalColors[MagicPortalFluid.FreePassageColor.Value].HexName; nextcolor = PortalColors[MagicPortalFluid.FreePassageColor.Value].NextColor; return PortalColors[MagicPortalFluid.FreePassageColor.Value].Pos; } if (PortalN.Portals[PortalName].TeleportAnything && MagicPortalFluid.TelePortAnythingColor.Value != "none") { currentColor = MagicPortalFluid.TelePortAnythingColor.Value; currentColorHex = PortalColors[MagicPortalFluid.TelePortAnythingColor.Value].HexName; nextcolor = PortalColors[MagicPortalFluid.TelePortAnythingColor.Value].NextColor; return PortalColors[MagicPortalFluid.TelePortAnythingColor.Value].Pos; } } if ((text != "" || text2 != "") && MagicPortalFluid.ConfigUseBiomeColors.Value) { if ((Object)(object)__instance == (Object)null) { text = text.Remove(0, 1); currentColor = ((PortalColor)int.Parse(text)).ToString(); currentColorHex = PortalColors[currentColor].HexName; nextcolor = PortalColors[currentColor].NextColor; return PortalColors[currentColor].Pos; } MagicPortalFluid._teleportWorldDataCache.TryGetValue(__instance, out var value); if (value.BiomeColor != "skip") { if (text != "") { text = text.Remove(0, 1); currentColor = ((PortalColor)int.Parse(text)).ToString(); } else { currentColor = text2; } currentColorHex = PortalColors[currentColor].HexName; nextcolor = PortalColors[currentColor].NextColor; return PortalColors[currentColor].Pos; } } if (PortalName == "") { if (MagicPortalFluid.CrystalKeyDefaultColor.Value == "None" || MagicPortalFluid.CrystalKeyDefaultColor.Value == "none") { currentColor = MagicPortalFluid.FreePassageColor.Value; currentColorHex = PortalColors[MagicPortalFluid.FreePassageColor.Value].HexName; nextcolor = PortalColors[MagicPortalFluid.FreePassageColor.Value].NextColor; return PortalColors[MagicPortalFluid.FreePassageColor.Value].Pos; } currentColor = MagicPortalFluid.CrystalKeyDefaultColor.Value; currentColorHex = PortalColors[MagicPortalFluid.CrystalKeyDefaultColor.Value].HexName; nextcolor = PortalColors[MagicPortalFluid.CrystalKeyDefaultColor.Value].NextColor; return PortalColors[MagicPortalFluid.CrystalKeyDefaultColor.Value].Pos; } foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor in PortalColors) { string key = portalColor.Key; if (!portalColor.Value.Item3 || (MagicPortalFluid.ConfigEnableGoldAsMaster.Value && portalColor.Key == "Gold")) { continue; } try { if (portal_Crystal_Cost[key] > 0 || portal_Key[key]) { currentColor = key; currentColorHex = PortalColors[currentColor].HexName; nextcolor = portalColor.Value.Item4; return portalColor.Value.Item2; } } catch { } } if (MagicPortalFluid.ConfigEnableGoldAsMaster.Value && (portal_Crystal_Cost["Gold"] > 0 || portal_Key["Gold"])) { currentColor = "Gold"; currentColorHex = PortalColors[currentColor].HexName; nextcolor = PortalColors[currentColor].NextColor; return PortalColors[currentColor].Pos; } currentColor = "Yellow"; currentColorHex = PortalColors["Yellow"].HexName; nextcolor = "Red"; return 0; } internal static void updateYmltoColorChange(string PortalName, int colorint, string BiomeCol = null) { if (!PortalN.Portals.ContainsKey(PortalName)) { WritetoYML(PortalName); } PortalColor portalColor = (PortalColor)colorint; string text = portalColor.ToString(); PortalN.Portals[PortalName].TeleportAnything = false; PortalN.Portals[PortalName].Admin_only_Access = false; PortalN.Portals[PortalName].Free_Passage = false; foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor2 in PortalColors) { PortalN.Portals[PortalName].Portal_Crystal_Cost[portalColor2.Key] = 0; PortalN.Portals[PortalName].Portal_Key[portalColor2.Key] = false; } PortalN.Portals[PortalName].Portal_Crystal_Cost[text] = MagicPortalFluid.ConfigCrystalsConsumable.Value; PortalN.Portals[PortalName].Portal_Key[text] = true; if (MagicPortalFluid.FreePassageColor.Value == text) { PortalN.Portals[PortalName].Free_Passage = true; } if (MagicPortalFluid.ConfigEnableCrystalsNKeys.Value) { if (MagicPortalFluid.AdminColor.Value == text) { PortalN.Portals[PortalName].Admin_only_Access = true; PortalN.Portals[PortalName].TeleportAnything = true; } if (MagicPortalFluid.ConfigEnableGoldAsMaster.Value) { PortalN.Portals[PortalName].Portal_Crystal_Cost["Gold"] = 1; PortalN.Portals[PortalName].Portal_Key["Gold"] = true; } if (MagicPortalFluid.FreePassageColor.Value == text) { PortalN.Portals[PortalName].Free_Passage = true; } if (MagicPortalFluid.TelePortAnythingColor.Value == text) { PortalN.Portals[PortalName].TeleportAnything = true; } } if (BiomeCol != null) { PortalN.Portals[PortalName].BiomeColor = BiomeCol; } if (PortalName == "" && MagicPortalFluid.ConfigAddRestricted.Value != "") { PortalN.Portals[PortalName].AdditionalProhibitItems = MagicPortalFluid.ConfigAddRestricted.Value.Split(new char[1] { ',' }).ToList(); } ClientORServerYMLUpdate(PortalN.Portals[PortalName], PortalName, colorint); } internal static void ClientORServerYMLUpdate(PortalName.Portal wacky, string PortNam, int colorint) { <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer = new <e7bba29c-a42b-46ec-ac53-439b82edf48e>SerializerBuilder().Build(); string value = string.Concat(PortNam + MagicPortalFluid.StringSeparator, <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer.Serialize(PortalN.Portals[PortNam])); if (ZNet.instance.IsServer() && ZNet.instance.IsDedicated()) { string text = null; text = MagicPortalFluid.WelcomeString + Environment.NewLine + <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer.Serialize(PortalN); if (!MagicPortalFluid.RiskyYMLSave.Value) { MagicPortalFluid.JustWrote = 1; File.WriteAllText(MagicPortalFluid.YMLCurrentFile, text); string text2 = ""; foreach (string item in File.ReadLines(MagicPortalFluid.YMLCurrentFile)) { text2 = text2 + item + Environment.NewLine; if (item.Contains("Admin_only_Access")) { text2 += Environment.NewLine; } } File.WriteAllText(MagicPortalFluid.YMLCurrentFile, text2); MagicPortalFluid.JustWrote = 2; } if (MagicPortalFluid.UseSmallUpdates.Value) { MagicPortalFluid.YMLPortalSmallData.Value = value; } else { MagicPortalFluid.YMLPortalData.Value = text; } return; } if (!ZNet.instance.IsServer()) { functions.ServerZDOymlUpdate(colorint, PortNam); return; } MagicPortalFluid.RareMagicPortal.LogInfo((object)"Single client only or Server but not dedicated"); string text3 = MagicPortalFluid.WelcomeString + Environment.NewLine + <803dcee1-f5f3-4b7a-8321-94fbb55ef8d6>ISerializer.Serialize(PortalN); if (!MagicPortalFluid.RiskyYMLSave.Value) { MagicPortalFluid.JustWrote = 1; File.WriteAllText(MagicPortalFluid.YMLCurrentFile, text3); string text4 = ""; foreach (string item2 in File.ReadLines(MagicPortalFluid.YMLCurrentFile)) { text4 = text4 + item2 + Environment.NewLine; if (item2.Contains("Admin_only_Access")) { text4 += Environment.NewLine; } } File.WriteAllText(MagicPortalFluid.YMLCurrentFile, text4); MagicPortalFluid.JustWrote = 2; } if (MagicPortalFluid.ConfigEnableYMLLogs.Value) { MagicPortalFluid.RareMagicPortal.LogInfo((object)text3); } if (ZNet.instance.IsServer()) { MagicPortalFluid.YMLPortalData.Value = text3; } } internal static bool CrystalandKeyLogic(string PortalName, string BiomeColor = "") { //IL_07b9: Unknown result type (might be due to invalid IL or missing references) //IL_07c8: Unknown result type (might be due to invalid IL or missing references) //IL_0bad: Unknown result type (might be due to invalid IL or missing references) //IL_0bd6: Unknown result type (might be due to invalid IL or missing references) //IL_0bff: Unknown result type (might be due to invalid IL or missing references) //IL_0939: Unknown result type (might be due to invalid IL or missing references) //IL_0952: Unknown result type (might be due to invalid IL or missing references) //IL_096b: Unknown result type (might be due to invalid IL or missing references) //IL_0984: Unknown result type (might be due to invalid IL or missing references) //IL_099d: Unknown result type (might be due to invalid IL or missing references) //IL_09b6: Unknown result type (might be due to invalid IL or missing references) //IL_09cf: Unknown result type (might be due to invalid IL or missing references) //IL_09e8: Unknown result type (might be due to invalid IL or missing references) //IL_0a01: Unknown result type (might be due to invalid IL or missing references) //IL_10e8: Unknown result type (might be due to invalid IL or missing references) //IL_0a1a: Unknown result type (might be due to invalid IL or missing references) //IL_0a33: Unknown result type (might be due to invalid IL or missing references) //IL_0a4c: Unknown result type (might be due to invalid IL or missing references) //IL_0a65: Unknown result type (might be due to invalid IL or missing references) //IL_0a8e: Unknown result type (might be due to invalid IL or missing references) //IL_0ab7: Unknown result type (might be due to invalid IL or missing references) //IL_0ae0: Unknown result type (might be due to invalid IL or missing references) //IL_0b09: Unknown result type (might be due to invalid IL or missing references) //IL_0b32: Unknown result type (might be due to invalid IL or missing references) //IL_0b5b: Unknown result type (might be due to invalid IL or missing references) //IL_0b84: Unknown result type (might be due to invalid IL or missing references) _ = MagicPortalFluid.ConfigCrystalsConsumable.Value; bool flag = false; bool flag2 = false; string text = ""; string text2 = ""; bool flag3 = false; if (Enumerable.Contains(PortalName, NameIdentifier)) { text = PortalName.Substring(PortalName.IndexOf(NameIdentifier) + 1); PortalName = PortalName[..PortalName.IndexOf(NameIdentifier)]; if (MagicPortalFluid.ConfigUseBiomeColors.Value && BiomeColor != "skip") { flag3 = true; text2 = ((PortalColor)int.Parse(text)).ToString(); } } if (BiomeColor != "" && MagicPortalFluid.ConfigUseBiomeColors.Value && !flag3 && BiomeColor != "skip") { text2 = BiomeColor; flag3 = true; } MagicPortalFluid.RareMagicPortal.LogInfo((object)("Portal name is " + PortalName)); if (!PortalN.Portals.ContainsKey(PortalName)) { WritetoYML(PortalName); } flag = PortalN.Portals[PortalName].Admin_only_Access; flag2 = PortalN.Portals[PortalName].Free_Passage; Dictionary<string, int> dictionary = PortalN.Portals[PortalName].Portal_Crystal_Cost; Dictionary<string, bool> dictionary2 = PortalN.Portals[PortalName].Portal_Key; bool teleportAnything = PortalN.Portals[PortalName].TeleportAnything; Player localPlayer = Player.m_localPlayer; if ((flag && MagicPortalFluid.isAdmin && !flag3) || text2 == MagicPortalFluid.AdminColor.Value) { ((Character)localPlayer).Message((MessageType)1, "$rmp_kin_welcome", 0, (Sprite)null); return true; } if (flag && !MagicPortalFluid.isAdmin && MagicPortalFluid.ConfigEnableCrystalsNKeys.Value && !flag3) { ((Character)localPlayer).Message((MessageType)2, "$rmp_kin_only", 0, (Sprite)null); return false; } if ((teleportAnything && !flag3) || text2 == MagicPortalFluid.TelePortAnythingColor.Value) { ((Character)localPlayer).Message((MessageType)1, "$rmp_freepassage", 0, (Sprite)null); if (MagicPortalFluid.ConfigEnableCrystalsNKeys.Value) { ((Character)localPlayer).Message((MessageType)2, "$rmp_allowsEverything", 0, (Sprite)null); } return true; } if (MagicPortalFluid.ConfigEnableCrystalsNKeys.Value) { if (!((Humanoid)localPlayer).IsTeleportable()) { ((Character)localPlayer).Message((MessageType)2, "$msg_noteleport", 0, (Sprite)null); return false; } if ((flag2 && !flag3) || text2 == MagicPortalFluid.FreePassageColor.Value) { ((Character)localPlayer).Message((MessageType)1, "$rmp_freepassage", 0, (Sprite)null); return true; } CrystalCount["Gold"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorGold.Value, -1, true); CrystalCount["Red"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorRed.Value, -1, true); CrystalCount["Green"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorGreen.Value, -1, true); CrystalCount["Blue"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorBlue.Value, -1, true); CrystalCount["Purple"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorPurple.Value, -1, true); CrystalCount["Tan"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorTan.Value, -1, true); CrystalCount["Yellow"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorYellow.Value, -1, true); CrystalCount["White"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorWhite.Value, -1, true); CrystalCount["Black"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorBlack.Value, -1, true); CrystalCount["Cyan"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorCyan.Value, -1, true); CrystalCount["Orange"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.GemColorOrange.Value, -1, true); KeyCount["Gold"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyGold, -1, true); KeyCount["Red"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyRed, -1, true); KeyCount["Green"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyGreen, -1, true); KeyCount["Blue"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyBlue, -1, true); KeyCount["Purple"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyPurple, -1, true); KeyCount["Tan"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyTan, -1, true); KeyCount["White"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyWhite, -1, true); KeyCount["Yellow"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyYellow, -1, true); KeyCount["Black"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyBlack, -1, true); KeyCount["Cyan"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyCyan, -1, true); KeyCount["Orange"] = ((Humanoid)localPlayer).m_inventory.CountItems(MagicPortalFluid.PortalKeyOrange, -1, true); if (flag3) { dictionary = new Dictionary<string, int>(); dictionary2 = new Dictionary<string, bool>(); dictionary.Add(text2, MagicPortalFluid.ConfigCrystalsConsumable.Value); dictionary2.Add(text2, value: true); if (MagicPortalFluid.ConfigEnableGoldAsMaster.Value) { dictionary.Add("Gold", MagicPortalFluid.ConfigCrystalsConsumable.Value); dictionary2.Add("Gold", value: true); } } int num = 0; int num2 = 0; bool flag4 = false; int num3 = 0; _ = PortalColors.Count; foreach (KeyValuePair<string, (Color, int, bool, string, string)> portalColor in PortalColors) { if (!dictionary.TryGetValue(portalColor.Key, out var _) || (dictionary[portalColor.Key] <= 0 && !dictionary2[portalColor.Key]) || flag4) { continue; } num = ((CrystalCount[portalColor.Key] == 0) ? portalColor.Value.Item2 : ((dictionary[portalColor.Key] <= CrystalCount[portalColor.Key]) ? (200 + portalColor.Value.Item2) : (100 + portalColor.Value.Item2))); if (dictionary2[portalColor.Key]) { if (dictionary[portalColor.Key] == 0) { num2 = 1; num = ((KeyCount[portalColor.Key] <= 0) ? portalColor.Value.Item2 : (300 + portalColor.Value.Item2)); } else if (KeyCount[portalColor.Key] > 0 && num < 200) { num = 300 + portalColor.Value.Item2; } else { num2 = 2; } } if (num > 200) { flag4 = true; } if (num < 200 && num3 == 0) { num3 = num; } } if (num < 22 && num3 == 0) { num3 = num; } if (num == 22 && num3 != 0) { num = num3; } string text3 = "$rmp_crystals"; if (num2 == 1) { text3 = "$rmp_key"; } if (num2 == 2) { text3 = "$rmp_crystalorkey"; } MessageType val = (MessageType)2; if (MagicPortalFluid.ConfigMessageLeft.Value) { val = (MessageType)1; } switch (num) { case 0: ((Character)localPlayer).Message(val, "$rmp_noaccess " + text3, 0, (Sprite)null); return false; case 1: ((Character)localPlayer).Message(val, "$rmp_no_yellow_portal " + text3, 0, (Sprite)null); return false; case 2: ((Character)localPlayer).Message(val, "$rmp_no_red_portal " + text3, 0, (Sprite)null); return false; case 3: ((Character)localPlayer).Message(val, "$rmp_no_green_portal " + text3, 0, (Sprite)null); return false; case 4: ((Character)localPlayer).Message(val, "$rmp_no_blue_portal " + text3, 0, (Sprite)null); return false; case 5: ((Character)localPlayer).Message(val, "$rmp_no_purple_portal " + text3, 0, (Sprite)null); return false; case 6: ((Character)localPlayer).Message(val, "$rmp_no_tan_portal " + text3, 0, (Sprite)null); return false; case 7: ((Character)localPlayer).Message(val, "$rmp_no_cyan_portal " + text3, 0, (Sprite)null); return false; case 8: ((Character)localPlayer).Message(val, "$rmp_no_orange_portal " + text3, 0, (Sprite)null); return false; case 20: ((Character)localPlayer).Message(val, "$rmp_no_white_portal " + text3, 0, (Sprite)null); return false; case 21: ((Character)localPlayer).Message(val, "$rmp_no_black_portal " + text3, 0, (Sprite)null); return false; case 22: ((Character)localPlayer).Message(val, "$rmp_no_gold_portal " + text3, 0, (Sprite)null); return false; case 101: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_yellow {1}", dictionary["Yellow"], PortalName), 0, (Sprite)null); return false; case 102: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_red {1}", dictionary["Red"], PortalName), 0, (Sprite)null); return false; case 103: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_green {1}", dictionary["Green"], PortalName), 0, (Sprite)null); return false; case 104: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_blue {1}", dictionary["Blue"], PortalName), 0, (Sprite)null); return false; case 105: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_purple {1}", dictionary["Purple"], PortalName), 0, (Sprite)null); return false; case 106: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_tan {1}", dictionary["Tan"], PortalName), 0, (Sprite)null); return false; case 107: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_cyan {1}", dictionary["Cyan"], PortalName), 0, (Sprite)null); return false; case 108: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_orange {1}", dictionary["Orange"], PortalName), 0, (Sprite)null); return false; case 120: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_white {1}", dictionary["White"], PortalName), 0, (Sprite)null); return false; case 121: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_black {1}", dictionary["Black"], PortalName), 0, (Sprite)null); return false; case 122: ((Character)localPlayer).Message(val, string.Format("{0} $rmp_required_gold {1}", dictionary["Gold"], PortalName), 0, (Sprite)null); return false; case 201: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_yellow", dictionary["Yellow"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorYellow.Value, dictionary["Yellow"]); inventoryRemove = true; return true; case 202: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_red", dictionary["Red"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorRed.Value, dictionary["Red"]); inventoryRemove = true; return true; case 203: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_green", dictionary["Green"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorGreen.Value, dictionary["Green"]); inventoryRemove = true; return true; case 204: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_blue", dictionary["Blue"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorBlue.Value, dictionary["Blue"]); inventoryRemove = true; return true; case 205: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_purple", dictionary["Purple"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorPurple.Value, dictionary["Purple"]); inventoryRemove = true; return true; case 206: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_tan", dictionary["Tan"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorTan.Value, dictionary["Tan"]); inventoryRemove = true; return true; case 207: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_cyan", dictionary["Cyan"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorCyan.Value, dictionary["Cyan"]); inventoryRemove = true; return true; case 208: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_orange", dictionary["Orange"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorOrange.Value, dictionary["Orange"]); inventoryRemove = true; return true; case 220: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_white", dictionary["White"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorWhite.Value, dictionary["White"]); inventoryRemove = true; return true; case 221: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_black", dictionary["Black"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorBlack.Value, dictionary["Black"]); inventoryRemove = true; return true; case 222: ((Character)localPlayer).Message((MessageType)2, "$rmp_crystalgrants_access", 0, (Sprite)null); ((Character)localPlayer).Message((MessageType)1, string.Format("$rmp_consumed {0} $rmp_consumed_gold", dictionary["Gold"]), 0, (Sprite)null); removeItems.Add(MagicPortalFluid.GemColorGold.Value, dictionary["Gold"]); inventoryRemove = true; return true; case 301: ((Character)localPlayer).Message((MessageType)1, "$rmp_yellowKey_access", 0, (Sprite)null); return true; case 302: ((Character)localPlayer).Message((MessageType)1, "$rmp_redKey_access", 0, (Sprite)null); return true; case 303: ((Character)localPlayer).Message((MessageType)1, "$rmp_greenKey_access", 0, (Sprite)null); return true; case 304: ((Character)localPlayer).Message((MessageType)1, "$rmp_blueKey_access", 0, (Sprite)null); return true; case 305: ((Character)localPlayer).Message((MessageType)1, "$rmp_purpleKey_access", 0, (Sprite)null); return true; case 306: ((Character)localPlayer).Message((MessageType)1, "$rmp_tanKey_access", 0, (Sprite)null); return true; case 307: ((Character)localPlayer).Message((MessageType)1, "$rmp_cyanKey_access", 0, (Sprite)null); return true; case 308: ((Character)localPlayer).Message((MessageType)1, "$rmp_orangeKey_access", 0, (Sprite)null); return true; case 320: ((Character)localPlayer).Message((MessageType)1, "$rmp_whiteKey_access", 0, (Sprite)null); return true; case 321: ((Character)localPlayer).Message((MessageType)1, "$rmp_blackKey_access", 0, (Sprite)null); return true; case 322: ((Character)localPlayer).Message((MessageType)1, "$rmp_goldKey_access", 0, (Sprite)null); return true; case 999: ((Character)localPlayer).Message((MessageType)1, "$rmp_noaccess", 0, (Sprite)null); return false; default: ((Character)localPlayer).Message(val, "$rmp_noaccess", 0, (Sprite)null); return false; } } return true; } internal static void WritetoYML(string PortalName, string updateP = null) { RMP.LogInfo((object)"Writing New YML"); int num = 1; if (updateP == null) { PortalName.Portal value = new PortalName.Portal(); PortalN.Portals.Add(PortalName, value); } if (updateP != null) { PortalN.Portals[PortalName].Portal_Crystal_Cost[updateP] = 0; PortalN.Portals[PortalName].Portal_Key[updateP] = false; PortalN.Portals[PortalName].Free_Passage = false; PortalN.Portals[PortalName].TeleportAnything = false; PortalN.Portals[PortalName].Admin_only_Access = false; } if (MagicPortalFluid.CrystalKeyDefaultColor.Value == "None" || MagicPortalFluid.CrystalKeyDefaultColor.Value == "none") { PortalN.Portals[PortalName].Free_Passage = false; num = 1; PortalN.Portals[PortalName].Portal_Crystal_Cost["Yellow"] = MagicPortalFluid.ConfigCrystalsConsumable.Value; PortalN.Portals[PortalName].Portal_Key["Yellow"] = true; } else { PortalN.Portals[PortalName].Portal_Crystal_Cost[MagicPortalFluid.CrystalKeyDefaultColor.Value] = MagicPortalFluid.ConfigCrystalsConsumable.Value; PortalN.Portals[PortalName].Portal_Key[MagicPortalFluid.CrystalKeyDefaultColor.Value] = true; num = PortalColors[MagicPortalFluid.CrystalKeyDefaultColor.Value].Pos; } if (!(MagicPortalFluid.FreePassageColor.Value == "None") && !(MagicPortalFluid.FreePassageColor.Value == "none") && (MagicPortalFluid.CrystalKeyDefaultColor.Value == MagicPortalFluid.FreePassageColor.Value || (MagicPortalFluid.FreePassageColor.Value == "Yellow" && num == 1))) { PortalN.Portals[PortalName].Free_Passage = true; num = PortalColors[MagicPortalFluid.FreePassageColor.Value].Pos; PortalN.Portals[PortalName].Portal_Crystal_Cost[MagicPortalFluid.FreePassageColor.Value] = 0; PortalN.Portals[PortalName].Portal_Key[MagicPortalFluid.FreePassageColor.Value] = false; } if (!(MagicPortalFluid.TelePortAnythingColor.Value == "None") && !(MagicPortalFluid.TelePortAnythingColor.Value == "none") && (MagicPortalFluid.CrystalKeyDefaultColor.Value == MagicPortalFluid.TelePortAnythingColor.Value || (MagicPortalFluid.TelePortAnythingColor.Value == "Yellow" && num == 1))) { PortalN.Portals[PortalName].TeleportAnything = true; num = PortalColors[MagicPortalFluid.TelePortAnythingColor.Value].Pos; } if (!(MagicPortalFluid.AdminColor.Value == "None") && !(MagicPortalFluid.AdminColor.Value == "none") && (MagicPortalFluid.CrystalKeyDefaultColor.Value == MagicPortalFluid.AdminColor.Value || (MagicPortalFluid.AdminColor.Value == "Yellow" && num == 1))) { PortalN.Portals[PortalName].Admin_only_Access = true; num = PortalColors[MagicPortalFluid.AdminColor.Value].Pos; } if (MagicPortalFluid.ConfigAddRestricted.Value != "") { PortalN.Portals[PortalName].AdditionalProhibitItems = MagicPortalFluid.ConfigAddRestricted.Value.Split(new char[1] { ',' }).ToList(); } ClientORServerYMLUpdate(PortalN.Portals[PortalName], PortalName, num); } private static void SetTeleportWorldColors(TeleportWorldDataRMP teleportWorldData, bool SetcolorTarget = false, bool SetMaterial = false) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: 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) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_0233: 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_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Unknown result type (might be due to invalid IL or missing references) //IL_04ba: Unknown result type (might be due to invalid IL or missing references) //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04cb: Unknown result type (might be due to invalid IL or missing references) //IL_04d0: Unknown result type (might be due to invalid IL or missing references) //IL_04dd: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_04e6: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_052f: Unknown result type (might be due to invalid IL or missing references) //IL_0534: Unknown result type (might be due to invalid IL or missing references) //IL_03ee: Unknown result type (might be due to invalid IL or missing references) //IL_03f3: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_03cb: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_0561: Unknown result type (might be due to invalid IL or missing references) //IL_0546: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_0555: Unknown result type (might be due to invalid IL or missing references) //IL_0420: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) //IL_058e: Unknown result type (might be due to invalid IL or missing references) //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_057d: Unknown result type (might be due to invalid IL or missing references) //IL_0582: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_05ad: Unknown result type (might be due to invalid IL or missing references) //IL_05b2: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Unknown result type (might be due to invalid IL or missing references) //IL_05da: Unknown result type (might be due to invalid IL or missing references) //IL_05df: Unknown result type (might be due to invalid IL or missing references) //IL_05c4: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_0608: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_05f2: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: Unknown result type (might be due to invalid IL or missing references) //IL_0601: Unknown result type (might be due to invalid IL or missing references) //IL_063c: Unknown result type (might be due to invalid IL or missing references) //IL_0646: Unknown result type (might be due to invalid IL or missing references) //IL_064b: Unknown result type (might be due to invalid IL or missing references) //IL_0620: Unknown result type (might be due to invalid IL or missing references) //IL_062a: Unknown result type (might be due to invalid IL or missing references) //IL_062f: Unknown result type (might be due to invalid IL or missing references) teleportWorldData.OldColor = teleportWorldData.TargetColor; if (teleportWorldData.TargetColor == Gold) { try { Material material = MagicPortalFluid.originalMaterials["shaman_prupleball"]; foreach (Renderer item in teleportWorldData.MeshRend) { item.material = material; } } catch { } } else if (teleportWorldData.TargetColor == Color.black) { try { Material material2 = MagicPortalFluid.originalMaterials["silver_necklace"]; foreach (Renderer item2 in teleportWorldData.MeshRend) { item2.material = material2; } } catch { } } else { Material material3 = MagicPortalFluid.originalMaterials["portal_small"]; foreach (Renderer item3 in teleportWorldData.MeshRend) { item3.material = material3; } } foreach (Light light in teleportWorldData.Lights) { light.color = teleportWorldData.TargetColor; } foreach (ParticleSystem suck in teleportWorldData.Sucks) { MainModule main = suck.main; if (teleportWorldData.TargetColor == Color.white) { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(teleportWorldData.TargetColor); ((MainModule)(ref main)).maxParticles = 1000; } else if (teleportWorldData.TargetColor == Orange) { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(teleportWorldData.TargetColor); ((MainModule)(ref main)).maxParticles = 1000; } else if (teleportWorldData.TargetColor == Color.black) { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Color.white); ((MainModule)(ref main)).maxParticles = 1000; } else if (teleportWorldData.TargetColor == Yellow2) { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Yellow2); ((MainModule)(ref main)).maxParticles = 1000; } else if (teleportWorldData.TargetColor == Cornsilk) { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Brown); ((MainModule)(ref main)).maxParticles = 30; } else { ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Color.black); ((MainModule)(ref main)).maxParticles = 1000; } } foreach (ParticleSystem system in teleportWorldData.Systems) { ColorOverLifetimeModule colorOverLifetime = system.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = new MinMaxGradient(teleportWorldData.TargetColor, teleportWorldData.TargetColor); MainModule main2 = system.main; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(teleportWorldData.TargetColor); } foreach (ParticleSystem blueFlame in teleportWorldData.BlueFlames) { ShapeModule shape = blueFlame.shape; _ = ((ShapeModule)(ref shape)).radius; Color val = teleportWorldData.TargetColor; if (teleportWorldData.TargetColor == Purple) { ((Color)(ref val))..ctor(0.14509805f, 0f, 0.22745098f, 1f); ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["dragon_death_trail"]; } else if (teleportWorldData.TargetColor == Gold) { ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["dragon_death_trail"]; } else if (teleportWorldData.TargetColor == Cornsilk) { val = Brown; ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["teleport_suck"]; } else if (teleportWorldData.TargetColor == Color.blue) { ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["flame"]; } else if (teleportWorldData.TargetColor == Color.cyan) { ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["crystal_Dvergrcase"]; ((Color)(ref val))..ctor(26f / 85f, 41f / 51f, 0.76862746f, 1f); } else if (teleportWorldData.TargetColor == Color.white) { ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["teleport_suck"]; } else { ((Component)blueFlame).GetComponent<Renderer>().material = MagicPortalFluid.originalMaterials["portal_flame"]; } ColorOverLifetimeModule colorOverLifetime2 = blueFlame.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime2)).color = MinMaxGradient.op_Implicit(val); _ = teleportWorldData.TargetColor == Color.yellow; MainModule main3 = blueFlame.main; ((MainModule)(ref main3)).startColor = MinMaxGradient.op_Implicit(val); blueFlame.Clear(); blueFlame.Simulate(0f); blueFlame.Play(); } if (SetcolorTarget) { if (teleportWorldData.TargetColor == Color.black) { teleportWorldData.TeleportW.m_colorTargetfound = Color.black * 10f; } else if (teleportWorldData.TargetColor == Color.yellow) { teleportWorldData.TeleportW.m_colorTargetfound = m_colorTargetfound * 7f; } else if (teleportWorldData.TargetColor == Gold) { teleportWorldData.TeleportW.m_colorTargetfound = teleportWorldData.TargetColor; } else if (teleportWorldData.TargetColor == Cornsilk) { teleportWorldData.TeleportW.m_colorTargetfound = Brown * 3f; } else if (teleportWorldData.TargetColor == Color.cyan) { teleportWorldData.TeleportW.m_colorTargetfound = teleportWorldData.TargetColor * 4f; } else if (teleportWorldData.TargetColor == Color.blue) { teleportWorldData.TeleportW.m_colorTargetfound = teleportWorldData.TargetColor * 7f; } else { teleportWorldData.TeleportW.m_colorTargetfound = teleportWorldData.TargetColor * 7f; } } } private static bool TryGetTeleportWorld(TeleportWorld key, out TeleportWorldDataRMP value) { if (Object.op_Implicit((Object)(object)key)) { return MagicPortalFluid._teleportWorldDataCache.TryGetValue(key, out value); } value = null; return false; } } public static class Extensions { public static T Next<T>(this T src) where T : struct { if (!typeof(T).IsEnum) { throw new ArgumentException($"Argument {typeof(T).FullName} is not an Enum"); } T[] array = (T[])Enum.GetValues(src.GetType()); int num = Array.IndexOf(array, src) + 1; if (array.Length != num) { return array[num]; } return array[0]; } } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] public class PortalLights { public List<Light> Lights { get; } = new List<Light>(); public List<ParticleSystem> Systems { get; } = new List<ParticleSystem>(); public List<ParticleSystemRenderer> Renderers { get; } = new List<ParticleSystemRenderer>(); public Color TargetColor { get; set; } = Color.clear; public PortalLights(Fireplace fireplace) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) ExtractFireplaceData(fireplace.m_enabledObject); ExtractFireplaceData(fireplace.m_enabledObjectHigh); ExtractFireplaceData(fireplace.m_enabledObjectLow); } private void ExtractFireplaceData(GameObject targetObject) { if (Object.op_Implicit((Object)(object)targetObject)) { Lights.AddRange(targetObject.GetComponentsInChildren<Light>(true)); Systems.AddRange(targetObject.GetComponentsInChildren<ParticleSystem>(true)); Renderers.AddRange(targetObject.GetComponentsInChildren<ParticleSystemRenderer>(true)); } } } [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] internal class TeleportWorldDataRMP { public Color TargetColor = Color.clear; public Color LinkColor = Color.clear; public Color OldColor = Color.clear; public List<Light> Lights { get; } = new List<Light>(); public List<ParticleSystem> Systems { get; } = new List<ParticleSystem>(); public List<ParticleSystem> Sucks { get; } = new List<ParticleSystem>(); public List<ParticleSystem> BlueFlames { get; } = new List<ParticleSystem>(); public List<Material> Materials { get; } = new List<Material>(); public string Biome { get; set; } public string BiomeColor { get; set; } public List<Renderer> MeshRend { get; } = new List<Renderer>(); public string MaterialPortName { get; set; } public TeleportWorld TeleportW { get; } public TeleportWorldDataRMP(TeleportWorld teleportWorld) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) Lights.AddRange(teleportWorld.GetComponentsInNamedChild<Light>("Point light")); Systems.AddRange(teleportWorld.GetComponentsInNamedChild<ParticleSystem>("suck particles")); Systems.AddRange(teleportWorld.GetComponentsInNamedChild<ParticleSystem>("Particle System")); Sucks.AddRange(teleportWorld.GetComponentsInNamedChild<ParticleSystem>("Black_suck")); BlueFlames.AddRange(teleportWorld.GetComponentsInNamedChild<ParticleSystem>("blue flames")); Materials.AddRange(from psr in teleportWorld.GetComponentsInNamedChild<ParticleSystemRenderer>("blue flames") where (Object)(object)((Renderer)psr).material != (Object)null select ((Renderer)psr).material); MeshRend.AddRange(teleportWorld.GetComponentsInNamedChild<Renderer>("small_portal")); TeleportW = teleportWorld; } } internal static class TeleportWorldExtensionRMP { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] public static IEnumerable<T> GetComponentsInNamedChild<[<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(2)] T>(this TeleportWorld teleportWorld, string childName) { return from transform in ((Component)teleportWorld).GetComponentsInChildren<Transform>(true) where ((Object)transform).name == childName select ((Component)transform).GetComponent<T>() into component where component != null select component; } } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] [<f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(0)] [BepInPlugin("WackyMole.RareMagicPortal", "RareMagicPortal", "2.7.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInIncompatibility("randyknapp.mods.advancedportals")] internal class MagicPortalFluid : BaseUnityPlugin { [HarmonyPatch(typeof(Game), "SpawnPlayer")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public static class PlayerspawnExtarWait { private static void Postfix() { } } [HarmonyPriority(0)] [HarmonyPatch(typeof(ZNetScene), "Awake")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] private static class ZNetScene_Awake_PatchWRare { private static void Postfix() { Worldname = ZNet.instance.GetWorldName(); TargetPortalLoaded = Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.targetportal"); RareMagicPortal.LogInfo((object)"Setting MagicPortal Fluid Afterdelay"); if (ZNet.instance.IsDedicated() && ZNet.instance.IsServer()) { LoadIN(); } else { functions.GetAllMaterials(); } } } [HarmonyPatch(typeof(Game), "SpawnPlayer")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] internal static class Game_SpawnPreRMP { [HarmonyPrefix] internal static void Prefix() { LoadAllRecipeData(reload: true); LoadIN(); } } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] [HarmonyPatch(typeof(Game), "SpawnPlayer")] internal static class Game_OnNewCharacterDone_Patch { [HarmonyPostfix] internal static void Postfix() { JustWaitforInventory = false; StartingitemPrefab(); } } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] [HarmonyPatch(typeof(FejdStartup), "OnNewCharacterDone")] internal static class FejdStartup_OnNewCharacterDone_Patch { internal static void Postfix() { StartingFirsttime(); } } [HarmonyPatch(typeof(TeleportWorld), "TargetFound")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public static class DisabldHaveTarget { internal static bool Prefix(ref bool __result) { if ((Object)(object)Player.m_localPlayer == (Object)null) { return true; } if (((Character)Player.m_localPlayer).m_seman.HaveStatusEffect("yippeTele")) { __result = true; return false; } if (TargetPortalLoaded && !ConfigTargetPortalAnimation.Value) { __result = false; return false; } if (TargetPortalLoaded && ConfigTargetPortalAnimation.Value) { __result = true; return false; } return true; } } [HarmonyPatch(typeof(Minimap), "SetMapMode")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public class LeavePortalModeOnMapCloseMagicPortal { internal static void Postfix(MapMode mode) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 if ((int)mode != 2) { Teleporting = false; } } } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] [HarmonyPatch(typeof(Inventory), "IsTeleportable")] public static class InventoryIsTeleportablePatchRMP { [HarmonyPriority(300)] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] internal static bool Prefix(ref bool __result, ref Inventory __instance) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (__instance == null || (Object)(object)Player.m_localPlayer == (Object)null) { return true; } if (JustWaitforInventory) { return true; } bool flag = false; bool flag2 = false; if (((Character)Player.m_localPlayer).m_seman.HaveStatusEffect("yippeTele")) { flag = true; flag2 = true; } string text = null; Vector3 position = ((Component)Player.m_localPlayer).transform.position; List<Piece> list = new List<Piece>(); GetAllTheDamnPiecesinRadius(position, 5f, list); TeleportWorld val = null; using (List<Piece>.Enumerator enumerator = list.GetEnumerator()) { while (enumerator.MoveNext() && !((Component)enumerator.Current).TryGetComponent<TeleportWorld>(ref val)) { } } if ((Object)(object)val != (Object)null) { text = val.GetText(); if (text != null) { string text2 = text; bool flag3 = false; string text3 = ""; bool flag4 = false; if (Enumerable.Contains(text2, PortalColorLogic.NameIdentifier)) { text2.Substring(text2.IndexOf(PortalColorLogic.NameIdentifier)); string s = text2.Substring(text2.IndexOf(PortalColorLogic.NameIdentifier) + 1); text2 = text2[..text2.IndexOf(PortalColorLogic.NameIdentifier)]; flag4 = true; text3 = ((PortalColorLogic.PortalColor)int.Parse(s)).ToString(); } if (!PortalColorLogic.PortalN.Portals.ContainsKey(text2)) { PortalColorLogic.WritetoYML(text2); } _ = PortalColorLogic.PortalN.Portals[text2].Admin_only_Access; _ = PortalColorLogic.PortalN.Portals[text2].Free_Passage; flag3 = PortalColorLogic.PortalN.Portals[text2].TeleportAnything; List<string> additionalProhibitItems = PortalColorLogic.PortalN.Portals[text2].AdditionalProhibitItems; List<string> allowedUsers = PortalColorLogic.PortalN.Portals[text2].AllowedUsers; if (allowedUsers.Count > 0) { bool flag5 = false; foreach (string item in allowedUsers) { if (item == Player.m_localPlayer.GetPlayerName()) { flag5 = true; } } if (!flag5) { RareMagicPortal.LogInfo((object)("Player is not in the Allowed List for " + text2)); ((Character)Player.m_localPlayer).Message((MessageType)2, "Odin Deems " + Player.m_localPlayer.GetPlayerName() + " Not Worthy!", 0, (Sprite)null); __result = false; return false; } } if ((flag3 && !flag4) || text3 == TelePortAnythingColor.Value) { flag = true; } if (!flag && additionalProhibitItems.Count > 0) { ObjectDB instance = ObjectDB.instance; foreach (ItemData allItem in __instance.GetAllItems()) { foreach (string item2 in additionalProhibitItems) { GameObject itemPrefab = instance.GetItemPrefab(item2); if ((Object)(object)itemPrefab != (Object)null) { ItemData itemData = itemPrefab.GetComponent<ItemDrop>().m_itemData; if (itemData != null && itemData.m_shared.m_name == allItem.m_shared.m_name) { RareMagicPortal.LogInfo((object)("Found Prohibited item " + itemData.m_shared.m_name + " Teleport Not Allowed")); ((Character)Player.m_localPlayer).Message((MessageType)1, "Prohibited item " + itemData.m_shared.m_name, 0, (Sprite)null); __result = false; return false; } } } } } if (!flag && ConfigMaxWeight.Value > 0 && (TeleportingforWeight > 0 || Teleporting)) { if (__instance.GetTotalWeight() > (float)ConfigMaxWeight.Value) { RareMagicPortal.LogInfo((object)"Player Weight is greater than Max Portal Weight"); ((Character)Player.m_localPlayer).Message((MessageType)2, "You are carrying too much, max is " + ConfigMaxWeight.Value, 0, (Sprite)null); TeleportingforWeight++; if (TeleportingforWeight > 10) { TeleportingforWeight = 0; } __result = false; return false; } TeleportingforWeight = 0; } } } if (flag) { if (PortalDrinkDenyloc.Count == 0 || !flag2) { __result = true; return false; } ObjectDB instance2 = ObjectDB.instance; foreach (ItemData allItem2 in __instance.GetAllItems()) { foreach (string item3 in PortalDrinkDenyloc) { GameObject itemPrefab2 = instance2.GetItemPrefab(item3); if ((Object)(object)itemPrefab2 != (Object)null) { ItemData itemData2 = itemPrefab2.GetComponent<ItemDrop>().m_itemData; if (itemData2 != null && itemData2.m_shared.m_name == allItem2.m_shared.m_name) { RareMagicPortal.LogInfo((object)("Odin does not allow " + itemData2.m_shared.m_name + " even with Portal Drink")); ((Character)Player.m_localPlayer).Message((MessageType)1, "Odin still doesn't allow " + itemData2.m_shared.m_name, 0, (Sprite)null); __result = false; return false; } } } } __result = true; return false; } return true; } } [HarmonyPatch(typeof(Minimap), "OnMapLeftClick")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] internal class MapLeftClickForRareMagic { internal class SkipPortalException2 : Exception { } [HarmonyPriority(500)] internal static bool Prefix() { if (!Teleporting) { return true; } if (!Chainloader.PluginInfos.ContainsKey("org.bepinex.plugins.targetportal")) { return true; } HoldPins = Minimap.instance.m_pins; string text; try { text = functions.HandlePortalClick(); } catch { text = null; } if (text == null) { throw new SkipPortalException2(); } if (!((Humanoid)Player.m_localPlayer).IsTeleportable()) { ((Character)Player.m_localPlayer).Message((MessageType)2, "$msg_noteleport", 0, (Sprite)null); return false; } if (PortalColorLogic.CrystalandKeyLogic(text)) { return true; } throw new SkipPortalException2(); } [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] [return: <f04ec549-5ca7-4107-a39d-53aadf15d38b>Nullable(2)] internal static Exception Finalizer(Exception __exception) { if (!(__exception is SkipPortalException2)) { return __exception; } return null; } } [HarmonyPriority(200)] [HarmonyPatch(typeof(Minimap), "Start")] [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(0)] public class AddMinimapPortalIconRMP { [<e143a9e8-dc1e-4f36-83b6-d4ffdfe8fbda>NullableContext(1)] internal static void Postfix(Minimap _