Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MapQuickAccess v4.0.1
MapQuickAccess.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("REPOJP")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("zabuMod")] [assembly: AssemblyTitle("zabuMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } [BepInPlugin("REPOJP.MapQuickAccess", "MapQuickAccess", "4.0.0")] public class MapQuickAccessPlugin : BaseUnityPlugin { public const string PluginGuid = "REPOJP.MapQuickAccess"; public const string PluginName = "MapQuickAccess"; public const string PluginVersion = "4.0.0"; private Harmony harmony; internal static ManualLogSource Log; internal static ConfigFile PluginConfig; internal static ConfigEntry<bool> EnableMod; internal static ConfigEntry<bool> AllowWhileSprinting; internal static ConfigEntry<bool> AllowWhileDisabled; internal static ConfigEntry<bool> AllowWhileTumbling; internal static ConfigEntry<bool> AllowWhileAimTargetActive; internal static ConfigEntry<bool> AllowInMenuLevel; internal static ConfigEntry<bool> AllowWithTextInputActive; internal static ConfigEntry<bool> InstantOpenClose; internal static ConfigEntry<bool> EnableOpenCloseShake; internal static ConfigEntry<bool> KeepOpenSound; internal static ConfigEntry<bool> KeepLoopSound; internal static ConfigEntry<bool> DisableMoveSlowdown; internal static ConfigEntry<bool> DisableCameraZoomOverride; internal static ConfigEntry<bool> DisableCameraNoiseOverride; internal static ConfigEntry<bool> DisableCameraTopFade; internal static ConfigEntry<bool> DisableCameraBobMultiplier; internal static ConfigEntry<bool> KeepAimVisible; internal static ConfigEntry<bool> AlwaysOpenMap; internal static ConfigEntry<bool> EnableDoubleClickToggleAlwaysOpen; internal static ConfigEntry<float> DoubleClickThreshold; internal static ConfigEntry<bool> DisableLoopSoundWhenMapFixed; internal static ConfigEntry<bool> AutoKeepAimVisibleWhenMapFixed; internal static ConfigEntry<bool> EnableMapOffsetAdjustment; internal static ConfigEntry<float> MapOffsetX; internal static ConfigEntry<float> MapOffsetY; internal static ConfigEntry<float> MapDistanceOffset; internal static ConfigEntry<bool> EnableMapOpacityAdjustment; internal static ConfigEntry<float> MapOpacity; private void Awake() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; PluginConfig = ((BaseUnityPlugin)this).Config; InitializeConfig(); harmony = new Harmony("REPOJP.MapQuickAccess"); harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"MapQuickAccess 4.0.0 loaded / direct Sound.PlayLoop disabled for v0.4.1 compatibility"); } private void InitializeConfig() { //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Expected O, but got Unknown //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Expected O, but got Unknown //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Expected O, but got Unknown //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Expected O, but got Unknown //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Expected O, but got Unknown EnableMod = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableMod", true, "Enable this mod. このMODを有効化します"); AllowWhileSprinting = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowWhileSprinting", true, "Allow opening the map while sprinting. 走り中でもマップを開けるようにします"); AllowWhileDisabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowWhileDisabled", true, "Allow opening the map while disabled. 死亡無効化中でもマップを開けるようにします"); AllowWhileTumbling = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowWhileTumbling", true, "Deprecated in v0.4.0. Tumble map opening uses vanilla behavior. v0.4.0ではバニラのタンブル中マップ開閉を使用します"); AllowWhileAimTargetActive = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowWhileAimTargetActive", true, "Allow opening the map while aim target mode is active. エイム対象状態でもマップを開けるようにします"); AllowInMenuLevel = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowInMenuLevel", true, "Allow opening the map in menu levels. メニュー階層でもマップを開けるようにします"); AllowWithTextInputActive = ((BaseUnityPlugin)this).Config.Bind<bool>("Open Conditions", "AllowWithTextInputActive", true, "Allow opening the map while text input is active. テキスト入力中でもマップを開けるようにします"); InstantOpenClose = ((BaseUnityPlugin)this).Config.Bind<bool>("Opening Behavior", "InstantOpenClose", true, "Open and close the map instantly without the vanilla animation. バニラの開閉アニメーションを使わず即時開閉します"); EnableOpenCloseShake = ((BaseUnityPlugin)this).Config.Bind<bool>("Opening Behavior", "EnableOpenCloseShake", true, "Enable camera shake when opening or closing the map. マップ開閉時のカメラシェイクを有効化します"); KeepOpenSound = ((BaseUnityPlugin)this).Config.Bind<bool>("Opening Behavior", "KeepOpenSound", true, "Keep the map open and close sounds. マップの開閉音を維持します"); KeepLoopSound = ((BaseUnityPlugin)this).Config.Bind<bool>("Opening Behavior", "KeepLoopSound", true, "Keep the map loop sound while the map is active. マップ表示中のループ音を維持します"); DisableMoveSlowdown = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "DisableMoveSlowdown", true, "Disable movement slowdown while the map is open. マップ表示中の移動速度低下を無効化します"); DisableCameraZoomOverride = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "DisableCameraZoomOverride", true, "Disable the map zoom override while the map is open. マップ表示中のCameraZoom変更を無効化します"); DisableCameraNoiseOverride = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "DisableCameraNoiseOverride", true, "Disable the map camera noise override while the map is open. マップ表示中のCameraNoise変更を無効化します"); DisableCameraTopFade = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "DisableCameraTopFade", true, "Disable the top fade effect while the map is open. マップ表示中の上部フェードを無効化します"); DisableCameraBobMultiplier = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "DisableCameraBobMultiplier", true, "Disable the camera bob multiplier change while the map is open. マップ表示中のカメラボブ倍率変更を無効化します"); KeepAimVisible = ((BaseUnityPlugin)this).Config.Bind<bool>("Movement And Camera", "KeepAimVisible", false, "Keep the aim UI visible while the map is open. マップ表示中もエイムUIを隠さないようにします"); AlwaysOpenMap = ((BaseUnityPlugin)this).Config.Bind<bool>("Fixed Map Behavior", "AlwaysOpenMap", false, "Always keep the map open. 常にマップを開いた状態にします"); EnableDoubleClickToggleAlwaysOpen = ((BaseUnityPlugin)this).Config.Bind<bool>("Fixed Map Behavior", "EnableDoubleClickToggleAlwaysOpen", true, "Allow double-clicking the map key to toggle always-open mode. マップキーのダブルクリックで固定表示を切り替え可能にします"); DoubleClickThreshold = ((BaseUnityPlugin)this).Config.Bind<float>("Fixed Map Behavior", "DoubleClickThreshold", 0.3f, new ConfigDescription("Double-click detection time in seconds. ダブルクリック判定秒数です", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 0.6f), Array.Empty<object>())); DisableLoopSoundWhenMapFixed = ((BaseUnityPlugin)this).Config.Bind<bool>("Fixed Map Behavior", "DisableLoopSoundWhenMapFixed", true, "Disable the map loop sound while the map is fixed open. マップ固定中はループ音を無効化します"); AutoKeepAimVisibleWhenMapFixed = ((BaseUnityPlugin)this).Config.Bind<bool>("Fixed Map Behavior", "AutoKeepAimVisibleWhenMapFixed", true, "Automatically keep the aim UI visible while the map is fixed open. マップ固定中は自動的にエイムUIを表示維持します"); EnableMapOffsetAdjustment = ((BaseUnityPlugin)this).Config.Bind<bool>("Map Placement", "EnableMapOffsetAdjustment", true, "Allow arrow keys and mouse wheel to adjust the opened map object placement. 矢印キーとマウスホイールで開いているマップオブジェクトの配置を調整可能にします"); MapOffsetX = ((BaseUnityPlugin)this).Config.Bind<float>("Map Placement", "MapOffsetX", 0f, new ConfigDescription("Horizontal placement offset of the opened map object. 開いているマップオブジェクトの左右位置補正です", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-3f, 3f), Array.Empty<object>())); MapOffsetY = ((BaseUnityPlugin)this).Config.Bind<float>("Map Placement", "MapOffsetY", 0f, new ConfigDescription("Vertical placement offset of the opened map object. 開いているマップオブジェクトの上下位置補正です", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-3f, 3f), Array.Empty<object>())); MapDistanceOffset = ((BaseUnityPlugin)this).Config.Bind<float>("Map Placement", "MapDistanceOffset", 0f, new ConfigDescription("Forward or backward placement offset of the opened map object. 開いているマップオブジェクトの前後位置補正です", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-3f, 3f), Array.Empty<object>())); EnableMapOpacityAdjustment = ((BaseUnityPlugin)this).Config.Bind<bool>("Map Placement", "EnableMapOpacityAdjustment", true, "Allow PageUp and PageDown to adjust map opacity. PageUpとPageDownでマップの不透明度を調整可能にします"); MapOpacity = ((BaseUnityPlugin)this).Config.Bind<float>("Map Placement", "MapOpacity", 1f, new ConfigDescription("Opacity of the visible map renderers. 表示中のマップ描画の不透明度です", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 1f), Array.Empty<object>())); } internal static void SaveConfigSafe() { try { if (PluginConfig != null) { PluginConfig.Save(); } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: SaveConfigSafe\n" + ex)); } } } } [HarmonyPatch(typeof(MapToolController), "Update")] public static class MapToolControllerUpdatePatch { private sealed class RuntimeState { public float LastMapButtonDownTime = -10f; public bool PendingToggleClick; public float PendingToggleClickTime; public bool SuppressMapInputUntilRelease; public bool BaseTransformCached; public Vector3 BasePlacementLocalPosition = Vector3.zero; public Quaternion BasePlacementLocalRotation = Quaternion.identity; public bool MaterialsCached; public Renderer[] CachedRenderers = (Renderer[])(object)new Renderer[0]; public Material[][] CachedMaterials = new Material[0][]; public Dictionary<Material, float> CachedMaterialAlpha = new Dictionary<Material, float>(); public float LastAppliedOpacity = -1f; public float PlayerNameCheckTimer; } private const float AdjustmentStep = 0.1f; private static readonly Dictionary<int, RuntimeState> RuntimeStates = new Dictionary<int, RuntimeState>(); private static readonly FieldInfo FieldActive = AccessTools.Field(typeof(MapToolController), "Active"); private static readonly FieldInfo FieldActivePrev = AccessTools.Field(typeof(MapToolController), "ActivePrev"); private static readonly FieldInfo FieldPhotonView = AccessTools.Field(typeof(MapToolController), "photonView"); private static readonly FieldInfo FieldHideLerp = AccessTools.Field(typeof(MapToolController), "HideLerp"); private static readonly FieldInfo FieldHideScale = AccessTools.Field(typeof(MapToolController), "HideScale"); private static readonly FieldInfo FieldMapToggled = AccessTools.Field(typeof(MapToolController), "mapToggled"); private static readonly FieldInfo FieldDisplayJointAngleDiff = AccessTools.Field(typeof(MapToolController), "DisplayJointAngleDiff"); private static readonly FieldInfo FieldDisplayJointAnglePreviousX = AccessTools.Field(typeof(MapToolController), "DisplayJointAnglePreviousX"); private static readonly FieldInfo FieldPlayerWorldSpaceUIPlayerName = AccessTools.Field(typeof(PlayerAvatar), "worldSpaceUIPlayerName"); private static readonly FieldInfo FieldWorldSpaceUiHideTimer = AccessTools.Field(typeof(WorldSpaceUIParent), "hideTimer"); private static readonly FieldInfo FieldWorldSpaceUiHideAlpha = AccessTools.Field(typeof(WorldSpaceUIParent), "hideAlpha"); private static readonly FieldInfo FieldDirtFinderMapPlayerStartOffset = AccessTools.Field(typeof(DirtFinderMapPlayer), "StartOffset"); private static bool Prefix(MapToolController __instance) { if (!MapQuickAccessPlugin.EnableMod.Value) { return true; } if ((Object)(object)__instance == (Object)null || (Object)(object)__instance.PlayerAvatar == (Object)null || (Object)(object)InputManager.instance == (Object)null || (Object)(object)PlayerController.instance == (Object)null || (Object)(object)Map.Instance == (Object)null || (Object)(object)CameraAim.Instance == (Object)null) { return true; } if (__instance.PlayerAvatar.isTumbling && !__instance.PlayerAvatar.isDisabled) { return true; } try { RunPatchedUpdate(__instance); return false; } catch (Exception ex) { if (MapQuickAccessPlugin.Log != null) { MapQuickAccessPlugin.Log.LogError((object)("Failure: MapToolController.Update patch\n" + ex)); } return true; } } private static void RunPatchedUpdate(MapToolController instance) { PhotonView photonView = GetPhotonView(instance); bool flag = !GameManager.Multiplayer() || ((Object)(object)photonView != (Object)null && photonView.IsMine); RuntimeState runtimeState = GetRuntimeState(instance); if (flag) { ProcessLocalInput(instance, runtimeState); } ProcessStateChange(instance, photonView, flag); ProcessAnimationAndCamera(instance, photonView, flag, runtimeState); ProcessSoundLoop(instance); } private static void ProcessLocalInput(MapToolController instance, RuntimeState runtimeState) { bool value = GetBool(instance, FieldActive); bool mapToggled = GetBool(instance, FieldMapToggled); float @float = GetFloat(instance, FieldHideLerp); bool flag = SemiFunc.InputDown((InputKey)8); bool flag2 = SemiFunc.InputHold((InputKey)8); bool flag3 = InputManager.instance.InputToggleGet((InputKey)8); HandleAlwaysOpenDoubleClick(runtimeState, flag, flag2, ref mapToggled, flag3); bool flag4 = MapQuickAccessPlugin.AllowWhileDisabled.Value || !instance.PlayerAvatar.isDisabled; bool flag5 = MapQuickAccessPlugin.AllowWhileAimTargetActive.Value || !CameraAim.Instance.AimTargetActive; bool flag6 = MapQuickAccessPlugin.AllowInMenuLevel.Value || !SemiFunc.MenuLevel(); bool flag7 = MapQuickAccessPlugin.AllowWithTextInputActive.Value || SemiFunc.NoTextInputsActive(); if (flag4 && flag5 && flag6 && flag7) { if (flag3) { if (!MapQuickAccessPlugin.EnableDoubleClickToggleAlwaysOpen.Value) { if (flag) { mapToggled = !mapToggled; } } else if (runtimeState.PendingToggleClick && Time.unscaledTime - runtimeState.PendingToggleClickTime > MapQuickAccessPlugin.DoubleClickThreshold.Value) { mapToggled = !mapToggled; runtimeState.PendingToggleClick = false; } } else { mapToggled = false; runtimeState.PendingToggleClick = false; } bool flag8 = MapQuickAccessPlugin.AllowWhileSprinting.Value || !PlayerController.instance.sprinting; bool flag9 = flag2 && !runtimeState.SuppressMapInputUntilRelease; if ((MapQuickAccessPlugin.AlwaysOpenMap.Value || flag9 || mapToggled || Map.Instance.debugActive) && flag8) { if (MapQuickAccessPlugin.InstantOpenClose.Value || @float >= 1f) { value = true; } } else { if (!MapQuickAccessPlugin.AlwaysOpenMap.Value && !flag3) { mapToggled = false; } if (MapQuickAccessPlugin.InstantOpenClose.Value || @float <= 0f) { value = false; } } } else { mapToggled = false; runtimeState.PendingToggleClick = false; value = false; } SetBool(instance, FieldMapToggled, mapToggled); SetBool(instance, FieldActive, value); } private static void HandleAlwaysOpenDoubleClick(RuntimeState runtimeState, bool mapButtonDown, bool mapButtonHold, ref bool mapToggled, bool toggleMode) { if (!mapButtonHold) { runtimeState.SuppressMapInputUntilRelease = false; } if (!MapQuickAccessPlugin.EnableDoubleClickToggleAlwaysOpen.Value || !mapButtonDown) { return; } float unscaledTime = Time.unscaledTime; float value = MapQuickAccessPlugin.DoubleClickThreshold.Value; if (unscaledTime - runtimeState.LastMapButtonDownTime <= value) { MapQuickAccessPlugin.AlwaysOpenMap.Value = !MapQuickAccessPlugin.AlwaysOpenMap.Value; MapQuickAccessPlugin.SaveConfigSafe(); runtimeState.LastMapButtonDownTime = -10f; runtimeState.PendingToggleClick = false; runtimeState.SuppressMapInputUntilRelease = true; mapToggled = false; if (MapQuickAccessPlugin.Log != null) { MapQuickAccessPlugin.Log.LogInfo((object)("AlwaysOpenMap: " + (MapQuickAccessPlugin.AlwaysOpenMap.Value ? "ON" : "OFF"))); } } else { runtimeState.LastMapButtonDownTime = unscaledTime; if (toggleMode) { runtimeState.PendingToggleClick = true; runtimeState.PendingToggleClickTime = unscaledTime; } } } private static void ProcessStateChange(MapToolController instance, PhotonView photonView, bool isLocalOwner) { //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) bool @bool = GetBool(instance, FieldActive); bool bool2 = GetBool(instance, FieldActivePrev); if (@bool == bool2) { return; } SetBool(instance, FieldActivePrev, @bool); if (GameManager.Multiplayer() && isLocalOwner && (Object)(object)photonView != (Object)null) { photonView.RPC("SetActiveRPC", (RpcTarget)1, new object[1] { @bool }); } if (@bool) { if (isLocalOwner) { if (MapQuickAccessPlugin.EnableOpenCloseShake.Value && (Object)(object)GameDirector.instance != (Object)null && (Object)(object)GameDirector.instance.CameraShake != (Object)null) { GameDirector.instance.CameraShake.Shake(2f, 0.1f); } if ((Object)(object)Map.Instance != (Object)null) { Map.Instance.ActiveSet(true); } } if ((Object)(object)instance.VisualTransform != (Object)null) { ((Component)instance.VisualTransform).gameObject.SetActive(true); } if (MapQuickAccessPlugin.KeepOpenSound.Value && instance.SoundStart != null) { instance.SoundStart.Play(((Component)instance).transform.position, 1f, 1f, 1f, 1f); } return; } if (isLocalOwner) { if (MapQuickAccessPlugin.EnableOpenCloseShake.Value && (Object)(object)GameDirector.instance != (Object)null && (Object)(object)GameDirector.instance.CameraShake != (Object)null) { GameDirector.instance.CameraShake.Shake(2f, 0.1f); } if ((Object)(object)Map.Instance != (Object)null) { Map.Instance.ActiveSet(false); } } if (MapQuickAccessPlugin.KeepOpenSound.Value && instance.SoundStop != null) { instance.SoundStop.Play(((Component)instance).transform.position, 1f, 1f, 1f, 1f); } } private static void ProcessAnimationAndCamera(MapToolController instance, PhotonView photonView, bool isLocalOwner, RuntimeState runtimeState) { //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: 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_0429: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_059b: Unknown result type (might be due to invalid IL or missing references) //IL_05a0: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: 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_0572: Unknown result type (might be due to invalid IL or missing references) //IL_0576: Unknown result type (might be due to invalid IL or missing references) //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_04b4: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_0674: Unknown result type (might be due to invalid IL or missing references) //IL_0605: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Unknown result type (might be due to invalid IL or missing references) //IL_06bb: Unknown result type (might be due to invalid IL or missing references) //IL_06f1: Unknown result type (might be due to invalid IL or missing references) //IL_0519: Unknown result type (might be due to invalid IL or missing references) //IL_0523: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Unknown result type (might be due to invalid IL or missing references) bool @bool = GetBool(instance, FieldActive); bool flag = @bool && MapQuickAccessPlugin.AlwaysOpenMap.Value; float num = GetFloat(instance, FieldHideLerp); float num2 = 90f; float num3 = 1f; if (GameManager.Multiplayer() && !isLocalOwner) { num2 = 0f; num3 = 2f; } if (MapQuickAccessPlugin.InstantOpenClose.Value) { if (@bool) { num = 0f; SetFloat(instance, FieldHideScale, 1f); if ((Object)(object)instance.HideTransform != (Object)null) { instance.HideTransform.localRotation = Quaternion.identity; } if ((Object)(object)instance.VisualTransform != (Object)null) { ((Component)instance.VisualTransform).gameObject.SetActive(true); } } else { num = 1f; SetFloat(instance, FieldHideScale, 0f); if ((Object)(object)instance.HideTransform != (Object)null) { instance.HideTransform.localRotation = Quaternion.Euler(num2, 0f, 0f); } if ((Object)(object)instance.VisualTransform != (Object)null) { ((Component)instance.VisualTransform).gameObject.SetActive(false); } } SetFloat(instance, FieldHideLerp, num); } else { float value; if (@bool) { if (num > 0f) { num -= Time.deltaTime * instance.IntroSpeed * num3; } value = Mathf.LerpUnclamped(1f, 0f, instance.IntroCurve.Evaluate(num)); if ((Object)(object)instance.HideTransform != (Object)null) { instance.HideTransform.localRotation = Quaternion.Slerp(Quaternion.identity, Quaternion.Euler(num2, 0f, 0f), instance.IntroCurve.Evaluate(num)); } } else { if (num < 1f) { num += Time.deltaTime * instance.OutroSpeed * num3; if (num > 1f && (Object)(object)instance.VisualTransform != (Object)null) { ((Component)instance.VisualTransform).gameObject.SetActive(false); } } value = Mathf.LerpUnclamped(1f, 0f, instance.OutroCurve.Evaluate(num)); } SetFloat(instance, FieldHideLerp, num); SetFloat(instance, FieldHideScale, value); } if (isLocalOwner && @bool) { ForceDeadMapPositionUpdate(instance); ProcessLocalUi(instance, runtimeState, flag); if (!flag) { SemiFunc.UIHideWorldSpace(); } else { KeepWorldSpaceUiVisible(); UpdatePlayerNamesWhileFixed(runtimeState); } if (!MapQuickAccessPlugin.DisableMoveSlowdown.Value) { PlayerController.instance.MoveMult(instance.MoveMultiplier, 0.1f); } if (!MapQuickAccessPlugin.DisableCameraTopFade.Value && (Object)(object)CameraTopFade.Instance != (Object)null) { CameraTopFade.Instance.Set(instance.FadeAmount, 0.1f); } if (!MapQuickAccessPlugin.DisableCameraBobMultiplier.Value && (Object)(object)CameraBob.Instance != (Object)null) { CameraBob.Instance.SetMultiplier(instance.BobMultiplier, 0.1f); } if (!MapQuickAccessPlugin.DisableCameraZoomOverride.Value && (Object)(object)CameraZoom.Instance != (Object)null) { CameraZoom.Instance.OverrideZoomSet(50f, 0.05f, 2f, 2f, ((Component)instance).gameObject, 100); } if (!MapQuickAccessPlugin.DisableCameraNoiseOverride.Value && (Object)(object)CameraNoise.Instance != (Object)null) { CameraNoise.Instance.Override(0.025f, 0.25f); } if (!MapQuickAccessPlugin.KeepAimVisible.Value && (!flag || !MapQuickAccessPlugin.AutoKeepAimVisibleWhenMapFixed.Value) && (Object)(object)Aim.instance != (Object)null) { Aim.instance.SetState((State)4); } ProcessAdjustmentInputs(flag); } Vector3 val = Vector3.one; if (GameManager.Multiplayer() && !isLocalOwner) { if ((Object)(object)((Component)instance).transform.parent != (Object)null && (Object)(object)instance.FollowTransformClient != (Object)null) { ((Component)instance).transform.parent.position = instance.FollowTransformClient.position; ((Component)instance).transform.parent.rotation = instance.FollowTransformClient.rotation; val = instance.FollowTransformClient.localScale; } if ((Object)(object)instance.mainSpringTransform != (Object)null && (Object)(object)instance.mainSpringTransformTarget != (Object)null) { if (MapQuickAccessPlugin.InstantOpenClose.Value) { instance.mainSpringTransform.rotation = instance.mainSpringTransformTarget.rotation; } else { instance.mainSpringTransform.rotation = SemiFunc.SpringQuaternionGet(instance.mainSpring, instance.mainSpringTransformTarget.rotation, -1f); } } } float @float = GetFloat(instance, FieldHideScale); if ((Object)(object)((Component)instance).transform.parent != (Object)null) { if (MapQuickAccessPlugin.InstantOpenClose.Value) { ((Component)instance).transform.parent.localScale = val * @float; } else { ((Component)instance).transform.parent.localScale = Vector3.Lerp(((Component)instance).transform.parent.localScale, val * @float, Time.deltaTime * 20f); } } if ((Object)(object)instance.displaySpringTransform != (Object)null && (Object)(object)instance.displaySpringTransformTarget != (Object)null) { if (MapQuickAccessPlugin.InstantOpenClose.Value) { instance.displaySpringTransform.rotation = instance.displaySpringTransformTarget.rotation; SetDisplayJointAngleDiff(instance, 0f); SetDisplayJointAnglePreviousX(instance, instance.displaySpringTransform.localRotation.x); if (instance.SoundLoop != null) { instance.SoundLoop.LoopPitch = 1f; } } else { instance.displaySpringTransform.rotation = SemiFunc.SpringQuaternionGet(instance.displaySpring, instance.displaySpringTransformTarget.rotation, -1f); } } if (!MapQuickAccessPlugin.InstantOpenClose.Value && @bool && (Object)(object)instance.displaySpringTransform != (Object)null) { float displayJointAnglePreviousX = GetDisplayJointAnglePreviousX(instance); float num4 = (displayJointAnglePreviousX - instance.displaySpringTransform.localRotation.x) * 50f; num4 = Mathf.Clamp(num4, -0.1f, 0.1f); SetDisplayJointAngleDiff(instance, num4); SetDisplayJointAnglePreviousX(instance, instance.displaySpringTransform.localRotation.x); if (instance.SoundLoop != null) { instance.SoundLoop.LoopPitch = Mathf.Lerp(instance.SoundLoop.LoopPitch, 1f - num4, Time.deltaTime * 10f); } } if (isLocalOwner) { ApplyPlacementOverrides(instance, runtimeState, @bool); ApplyOpacityOverrides(instance, runtimeState, @bool); } } private static void ProcessLocalUi(MapToolController instance, RuntimeState runtimeState, bool fixedOpen) { if (fixedOpen) { if ((Object)(object)StatsUI.instance != (Object)null) { ((SemiUI)StatsUI.instance).Hide(); } } else if ((Object)(object)StatsUI.instance != (Object)null) { ((SemiUI)StatsUI.instance).Show(); } if ((Object)(object)ItemInfoUI.instance != (Object)null) { ((SemiUI)ItemInfoUI.instance).Hide(); } if ((Object)(object)ItemInfoExtraUI.instance != (Object)null) { ((SemiUI)ItemInfoExtraUI.instance).Hide(); } if ((Object)(object)MissionUI.instance != (Object)null && (Object)(object)MissionUI.instance.Text != (Object)null && ((TMP_Text)MissionUI.instance.Text).text != "") { ((SemiUI)MissionUI.instance).Show(); } } private static void KeepWorldSpaceUiVisible() { if (!((Object)(object)WorldSpaceUIParent.instance == (Object)null)) { if (FieldWorldSpaceUiHideTimer != null) { FieldWorldSpaceUiHideTimer.SetValue(WorldSpaceUIParent.instance, 0f); } if (FieldWorldSpaceUiHideAlpha != null) { FieldWorldSpaceUiHideAlpha.SetValue(WorldSpaceUIParent.instance, 1f); } CanvasGroup component = ((Component)WorldSpaceUIParent.instance).GetComponent<CanvasGroup>(); if ((Object)(object)component != (Object)null) { component.alpha = 1f; } } } private static void UpdatePlayerNamesWhileFixed(RuntimeState runtimeState) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: 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_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)GameDirector.instance == (Object)null || (Object)(object)Camera.main == (Object)null || (Object)(object)DataDirector.instance == (Object)null || (int)GameDirector.instance.currentState != 2 || DataDirector.instance.SettingValueFetch((Setting)30) != 1) { return; } if (runtimeState.PlayerNameCheckTimer > 0f) { runtimeState.PlayerNameCheckTimer -= Time.deltaTime; return; } runtimeState.PlayerNameCheckTimer = 0.25f; List<PlayerAvatar> list = new List<PlayerAvatar>(); Camera main = Camera.main; RaycastHit[] array = Physics.SphereCastAll(((Component)main).transform.position, 0.25f, ((Component)main).transform.forward, 15f, LayerMask.GetMask(new string[1] { "PlayerVisuals" }), (QueryTriggerInteraction)2); RaycastHit val3 = default(RaycastHit); for (int i = 0; i < array.Length; i++) { RaycastHit val = array[i]; PlayerAvatarVisuals componentInParent = ((Component)((RaycastHit)(ref val)).collider).GetComponentInParent<PlayerAvatarVisuals>(); if ((Object)(object)componentInParent == (Object)null || (Object)(object)componentInParent.playerAvatar == (Object)null) { continue; } PlayerAvatar playerAvatar = componentInParent.playerAvatar; if (playerAvatar.isLocal || list.Contains(playerAvatar)) { continue; } Vector3 val2 = ((Component)main).transform.position - ((RaycastHit)(ref val)).point; if (!Physics.Raycast(((RaycastHit)(ref val)).point, val2, ref val3, ((Vector3)(ref val2)).magnitude, LayerMask.op_Implicit(SemiFunc.LayerMaskGetVisionObstruct()) - LayerMask.GetMask(new string[1] { "Player" }), (QueryTriggerInteraction)2) && FieldPlayerWorldSpaceUIPlayerName != null) { object? value = FieldPlayerWorldSpaceUIPlayerName.GetValue(playerAvatar); WorldSpaceUIPlayerName val4 = (WorldSpaceUIPlayerName)((value is WorldSpaceUIPlayerName) ? value : null); if ((Object)(object)val4 != (Object)null) { val4.Show(); list.Add(playerAvatar); } } } } private static void ProcessAdjustmentInputs(bool fixedOpen) { bool flag = false; if (MapQuickAccessPlugin.EnableMapOffsetAdjustment.Value) { bool flag2 = IsCtrlPressed(); if (Input.GetKeyDown((KeyCode)276)) { MapQuickAccessPlugin.MapOffsetX.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOffsetX.Value - 0.1f, -3f, 3f); flag = true; } if (Input.GetKeyDown((KeyCode)275)) { MapQuickAccessPlugin.MapOffsetX.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOffsetX.Value + 0.1f, -3f, 3f); flag = true; } if (flag2) { if (Input.GetKeyDown((KeyCode)273)) { MapQuickAccessPlugin.MapOffsetY.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOffsetY.Value + 0.1f, -3f, 3f); flag = true; } if (Input.GetKeyDown((KeyCode)274)) { MapQuickAccessPlugin.MapOffsetY.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOffsetY.Value - 0.1f, -3f, 3f); flag = true; } } else if (!fixedOpen) { if (Input.GetKeyDown((KeyCode)273)) { MapQuickAccessPlugin.MapDistanceOffset.Value = Mathf.Clamp(MapQuickAccessPlugin.MapDistanceOffset.Value + 0.1f, -3f, 3f); flag = true; } if (Input.GetKeyDown((KeyCode)274)) { MapQuickAccessPlugin.MapDistanceOffset.Value = Mathf.Clamp(MapQuickAccessPlugin.MapDistanceOffset.Value - 0.1f, -3f, 3f); flag = true; } } } if (MapQuickAccessPlugin.EnableMapOpacityAdjustment.Value) { if (Input.GetKeyDown((KeyCode)280)) { MapQuickAccessPlugin.MapOpacity.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOpacity.Value + 0.1f, 0.1f, 1f); flag = true; } if (Input.GetKeyDown((KeyCode)281)) { MapQuickAccessPlugin.MapOpacity.Value = Mathf.Clamp(MapQuickAccessPlugin.MapOpacity.Value - 0.1f, 0.1f, 1f); flag = true; } } if (flag) { MapQuickAccessPlugin.MapOffsetX.Value = RoundTenths(MapQuickAccessPlugin.MapOffsetX.Value); MapQuickAccessPlugin.MapOffsetY.Value = RoundTenths(MapQuickAccessPlugin.MapOffsetY.Value); MapQuickAccessPlugin.MapDistanceOffset.Value = RoundTenths(MapQuickAccessPlugin.MapDistanceOffset.Value); MapQuickAccessPlugin.MapOpacity.Value = RoundTenths(MapQuickAccessPlugin.MapOpacity.Value); MapQuickAccessPlugin.SaveConfigSafe(); } } private static bool IsCtrlPressed() { return Input.GetKey((KeyCode)306) || Input.GetKey((KeyCode)305); } internal static void ForceDeadMapPositionUpdate(MapToolController instance) { //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0183: 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_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)instance == (Object)null || (Object)(object)instance.PlayerAvatar == (Object)null || (Object)(object)Map.Instance == (Object)null || (Object)(object)DirtFinderMapPlayer.Instance == (Object)null || !MapQuickAccessPlugin.AllowWhileDisabled.Value) { return; } PlayerAvatar playerAvatar = instance.PlayerAvatar; if (!playerAvatar.isDisabled && !playerAvatar.deadSet) { return; } PlayerDeathHead val = null; try { val = playerAvatar.playerDeathHead; } catch { val = null; } if ((Object)(object)val == (Object)null || (Object)(object)((Component)val).transform == (Object)null) { return; } try { Map.Instance.playerTransformSource = ((Component)val).transform; } catch { } Vector3 val2 = Vector3.zero; try { if (FieldDirtFinderMapPlayerStartOffset != null) { object value = FieldDirtFinderMapPlayerStartOffset.GetValue(DirtFinderMapPlayer.Instance); if (value is Vector3) { val2 = (Vector3)value; } } } catch { val2 = Vector3.zero; } try { Transform transform = ((Component)DirtFinderMapPlayer.Instance).transform; transform.position = ((Component)val).transform.position * Map.Instance.Scale + Map.Instance.OverLayerParent.position + val2; transform.rotation = ((Component)val).transform.rotation; transform.localPosition = new Vector3(transform.localPosition.x, 0f, transform.localPosition.z); MapLayer layerParent = Map.Instance.GetLayerParent(((Component)val).transform.position.y + 0.01f); if ((Object)(object)layerParent != (Object)null) { Map.Instance.PlayerLayer = layerParent.layer; } } catch (Exception ex) { if (MapQuickAccessPlugin.Log != null) { MapQuickAccessPlugin.Log.LogError((object)("Failure: ForceDeadMapPositionUpdate\n" + ex)); } } } private static void ApplyPlacementOverrides(MapToolController instance, RuntimeState runtimeState, bool active) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)instance == (Object)null || (Object)(object)((Component)instance).transform == (Object)null) { return; } Transform val = (((Object)(object)((Component)instance).transform.parent != (Object)null) ? ((Component)instance).transform.parent : ((Component)instance).transform); if (!((Object)(object)val == (Object)null)) { if (!runtimeState.BaseTransformCached) { runtimeState.BasePlacementLocalPosition = val.localPosition; runtimeState.BasePlacementLocalRotation = val.localRotation; runtimeState.BaseTransformCached = true; } if (active) { Vector3 localPosition = runtimeState.BasePlacementLocalPosition + new Vector3(MapQuickAccessPlugin.MapOffsetX.Value, MapQuickAccessPlugin.MapOffsetY.Value, MapQuickAccessPlugin.MapDistanceOffset.Value); val.localPosition = localPosition; val.localRotation = runtimeState.BasePlacementLocalRotation; } else { val.localPosition = runtimeState.BasePlacementLocalPosition; val.localRotation = runtimeState.BasePlacementLocalRotation; } } } private static void ApplyOpacityOverrides(MapToolController instance, RuntimeState runtimeState, bool active) { float num = (active ? Mathf.Clamp(MapQuickAccessPlugin.MapOpacity.Value, 0.1f, 1f) : 1f); if (!runtimeState.MaterialsCached) { CacheMapMaterials(instance, runtimeState); } if (Mathf.Abs(runtimeState.LastAppliedOpacity - num) < 0.0001f) { return; } for (int i = 0; i < runtimeState.CachedMaterials.Length; i++) { Material[] array = runtimeState.CachedMaterials[i]; if (array == null) { continue; } foreach (Material val in array) { if (!((Object)(object)val == (Object)null)) { if (!runtimeState.CachedMaterialAlpha.TryGetValue(val, out var value)) { value = GetMaterialBaseAlpha(val); runtimeState.CachedMaterialAlpha[val] = value; } SetMaterialAlpha(val, value * num); } } } runtimeState.LastAppliedOpacity = num; } private static void CacheMapMaterials(MapToolController instance, RuntimeState runtimeState) { Transform val = (((Object)(object)instance.VisualTransform != (Object)null) ? instance.VisualTransform : ((Component)instance).transform); if ((Object)(object)val == (Object)null) { return; } runtimeState.CachedRenderers = ((Component)val).GetComponentsInChildren<Renderer>(true); runtimeState.CachedMaterials = new Material[runtimeState.CachedRenderers.Length][]; runtimeState.CachedMaterialAlpha.Clear(); for (int i = 0; i < runtimeState.CachedRenderers.Length; i++) { Renderer val2 = runtimeState.CachedRenderers[i]; if ((Object)(object)val2 == (Object)null) { runtimeState.CachedMaterials[i] = (Material[])(object)new Material[0]; continue; } Material[] materials = val2.materials; runtimeState.CachedMaterials[i] = materials; foreach (Material val3 in materials) { if ((Object)(object)val3 != (Object)null && !runtimeState.CachedMaterialAlpha.ContainsKey(val3)) { runtimeState.CachedMaterialAlpha.Add(val3, GetMaterialBaseAlpha(val3)); } } } runtimeState.MaterialsCached = true; runtimeState.LastAppliedOpacity = -1f; } private static float GetMaterialBaseAlpha(Material material) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)material == (Object)null) { return 1f; } if (material.HasProperty("_Color")) { return material.color.a; } if (material.HasProperty("_BaseColor")) { return material.GetColor("_BaseColor").a; } return 1f; } private static void SetMaterialAlpha(Material material, float alpha) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)material == (Object)null)) { if (material.HasProperty("_Color")) { Color color = material.color; color.a = alpha; material.color = color; } if (material.HasProperty("_BaseColor")) { Color color2 = material.GetColor("_BaseColor"); color2.a = alpha; material.SetColor("_BaseColor", color2); } } } private static void ProcessSoundLoop(MapToolController instance) { } private static RuntimeState GetRuntimeState(MapToolController instance) { int instanceID = ((Object)instance).GetInstanceID(); if (!RuntimeStates.TryGetValue(instanceID, out var value)) { value = new RuntimeState(); RuntimeStates.Add(instanceID, value); } return value; } private static PhotonView GetPhotonView(MapToolController instance) { PhotonView val = null; if (FieldPhotonView != null) { object? value = FieldPhotonView.GetValue(instance); val = (PhotonView)((value is PhotonView) ? value : null); } if ((Object)(object)val == (Object)null) { val = ((Component)instance).GetComponent<PhotonView>(); if (FieldPhotonView != null && (Object)(object)val != (Object)null) { FieldPhotonView.SetValue(instance, val); } } return val; } private static bool GetBool(object instance, FieldInfo field) { if (field == null) { return false; } if (!(field.GetValue(instance) is bool result)) { return false; } return result; } private static void SetBool(object instance, FieldInfo field, bool value) { if (field != null) { field.SetValue(instance, value); } } private static float GetFloat(object instance, FieldInfo field) { if (field == null) { return 0f; } if (!(field.GetValue(instance) is float result)) { return 0f; } return result; } private static void SetFloat(object instance, FieldInfo field, float value) { if (field != null) { field.SetValue(instance, value); } } private static float GetDisplayJointAnglePreviousX(MapToolController instance) { if (FieldDisplayJointAnglePreviousX == null) { return 0f; } if (!(FieldDisplayJointAnglePreviousX.GetValue(instance) is float result)) { return 0f; } return result; } private static void SetDisplayJointAngleDiff(MapToolController instance, float value) { if (FieldDisplayJointAngleDiff != null) { FieldDisplayJointAngleDiff.SetValue(instance, value); } } private static void SetDisplayJointAnglePreviousX(MapToolController instance, float value) { if (FieldDisplayJointAnglePreviousX != null) { FieldDisplayJointAnglePreviousX.SetValue(instance, value); } } private static float RoundTenths(float value) { return Mathf.Round(value * 10f) / 10f; } } [HarmonyPatch(typeof(Map), "Update")] public static class MapUpdateDeadPlayerPatch { private static void Postfix() { try { if (!((Object)(object)MapToolController.instance == (Object)null) && !((Object)(object)Map.Instance == (Object)null) && Map.Instance.Active) { MapToolControllerUpdatePatch.ForceDeadMapPositionUpdate(MapToolController.instance); } } catch (Exception ex) { if (MapQuickAccessPlugin.Log != null) { MapQuickAccessPlugin.Log.LogError((object)("Failure: Map.Update dead player patch\n" + ex)); } } } }