using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using CellMenu; using ChainedPuzzles; using Gear; using HarmonyLib; using Il2CppInterop.Runtime.Injection; using Il2CppInterop.Runtime.InteropTypes; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppSystem.Collections.Generic; using LevelGeneration; using Microsoft.CodeAnalysis; using Player; using SNetwork; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyFileVersion("1.3.1")] [assembly: AssemblyInformationalVersion("1.3.1")] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyVersion("1.3.1.0")] [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; } } } internal class ManifestInfo { internal const string TSName = "Mirror_Mode"; internal const string TSDescription = "GTFO but the levels are flipped!"; internal const string TSVersion = "1.3.1"; internal const string TSAuthor = "AuriRex"; internal const string TSWebsite = "https://github.com/AuriRex/GTFO_MirrorMode/"; } namespace MirrorMode { public class ApplyMirror : MonoBehaviour { private static readonly Vector2 _scale = new Vector2(-1f, 1f); private static readonly Vector2 _offset = new Vector2(1f, 0f); private void OnRenderImage(RenderTexture source, RenderTexture destination) { //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) Graphics.Blit((Texture)(object)source, destination, _scale, _offset); } } public static class Patches { [HarmonyPatch(typeof(FPSCamera), "Setup", new Type[] { })] public static class FPSCamera__Setup__Patch { public static void Postfix(FPSCamera __instance) { Plugin.ApplyShaderTo(__instance); } } [HarmonyPatch(typeof(CM_PageObjectives), "OnEnable")] public static class CM_PageObjectives__OnEnable__Patch { private static bool _first = true; public static void Postfix(CM_PageObjectives __instance) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) if (_first) { _first = false; return; } Plugin.SetGUIRootMirrored(active: true); ((GuiLayer)GuiManager.WatermarkLayer).CanvasTrans.localScale = Vector3.one; } } [HarmonyPatch(typeof(CM_PageMap), "OnEnable")] public static class CM_PageMap__OnEnable__Patch { private static bool _first = true; public static void Postfix(CM_PageMap __instance) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) if (_first) { _first = false; return; } Plugin.SetGUIRootMirrored(active: false); ((GuiLayer)GuiManager.WatermarkLayer).CanvasTrans.localScale = INVERT_X; } } [HarmonyPatch(typeof(FocusStateManager), "ChangeState")] public static class FocusStateManager__ChangeState__Patch { public static void Postfix(FocusStateManager __instance, eFocusState state) { //IL_000a: 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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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_00a1: Unknown result type (might be due to invalid IL or missing references) ((GuiLayer)GuiManager.WatermarkLayer).CanvasTrans.localScale = Vector3.one; if (state - 4 > 4) { if ((int)state == 13) { CM_PageMap current = CM_PageMap.Current; ((Component)((CM_PageBase)current).m_cursor).transform.localScale = INVERT_X; ((Transform)((CM_PageBase)current).m_staticContentHolder).localScale = INVERT_X; foreach (CM_MapPlayerGUIItem item in (Il2CppArrayBase)(object)current.m_syncedPlayers) { ((Component)item).transform.localScale = INVERT_X; } if (((Behaviour)CM_PageMap.Current).isActiveAndEnabled) { ((GuiLayer)GuiManager.WatermarkLayer).CanvasTrans.localScale = INVERT_X; } } else { Plugin.SetGUIRootMirrored(active: false); } } else { Plugin.SetGUIRootMirrored(active: true); } } } [HarmonyPatch(typeof(EnemyScannerGraphics), "Start")] public static class EnemyScannerGraphics__Start__Patch { public static void Postfix(EnemyScannerGraphics __instance) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) Transform transform = ((Component)__instance.m_display).transform; if (!(transform.localScale.x < 0f)) { transform.localScale = Vector3.Scale(transform.localScale, INVERT_X); } } } [HarmonyPatch(typeof(SentryGunScreen), "SetAmmo")] public static class SentryGunScreen__SetAmmo__Patch { public static void Postfix(SentryGunScreen __instance) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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)) { if ((Object)(object)((Component)__instance).GetComponentInParent() != (Object)null) { ((Component)__instance).transform.localScale = Vector3.one; } else { ((Component)__instance).transform.localScale = INVERT_X; } } } } [HarmonyPatch(typeof(GameStateManager), "DoChangeState")] public static class GameStateManager__DoChangeState__Patch { public static void Postfix(GameStateManager __instance, eGameStateName nextState) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 if ((int)nextState == 10) { FlipMapIcons(); } } private static void FlipMapIcons() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) CM_PageMap current = CM_PageMap.Current; GameObject mapMoverElementsRoot = CM_PageMap.m_mapMoverElementsRoot; Transform val = ((mapMoverElementsRoot != null) ? mapMoverElementsRoot.transform : null); if ((Object)(object)val != (Object)null) { for (int i = 0; i < val.childCount; i++) { Transform child = val.GetChild(i); if (((Object)child).name.StartsWith("CM_MapElevator(Clone)")) { child.localScale = INVERT_X; } } } foreach (CM_MapZoneGUIItem item in (Il2CppArrayBase)(object)current.m_zoneGUI) { foreach (CM_MapAreaGUIItem item2 in (Il2CppArrayBase)(object)item.m_areaGUIs) { FlipGuiItems(item2.m_signGUIs); FlipGuiItems(item2.m_computerTerminalGUIs); FlipGuiItems(item2.m_doorGUIs); FlipGuiItems(item2.m_bulkheadDoorControllerGUIs); } } static void FlipGuiItems(Il2CppReferenceArray items) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) foreach (CM_SyncedGUIItem item3 in (Il2CppArrayBase)(object)items) { ((Component)item3).transform.localScale = Vector3.Scale(((Component)item3).transform.localScale, INVERT_X); } } } } [HarmonyPatch(typeof(GuiManager), "ScreenToGUIScaled")] public static class GuiManager__ScreenToGUIScaled__Patch { public static void Postfix(GuiManager __instance, ref Vector3 __result) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 eFocusState currentState = FocusStateManager.CurrentState; if (currentState - 4 <= 3 || (int)currentState == 13) { __result.x *= -1f; } } } [HarmonyPatch(typeof(AkGameObj), "Update")] public static class AkGameObj__Update__Patch { private const string GAMEOBJECT_NAME_FILTER = "FPSLookCamera"; public static void Postfix(AkGameObj __instance) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) if (!(((Object)__instance).name != "FPSLookCamera")) { Transform transform = ((Component)__instance).transform; Vector3 position = transform.position; Vector3 val = transform.forward * -1f; AkSoundEngine.SetObjectPosition(((Component)__instance).gameObject, position.x, position.y, position.z, val.x, val.y, val.z, transform.up.x, transform.up.y, transform.up.z); } } } [HarmonyPatch(typeof(LG_ComputerTerminal), "Setup")] public static class LG_ComputerTerminal__Setup__Patch { public static void Postfix(LG_ComputerTerminal __instance) { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_0041: Unknown result type (might be due to invalid IL or missing references) Transform val = ((Component)__instance).transform.Find("Graphics"); if ((Object)(object)val == (Object)null) { GameObject screen = __instance.m_screen; val = ((screen != null) ? screen.transform.parent : null); } if ((Object)(object)val != (Object)null) { ((Component)val).transform.localScale = INVERT_X; } Transform transform = __instance.m_serial.transform; transform.localPosition = Vector3.Scale(transform.localPosition, INVERT_X); transform.localScale = Vector3.Scale(transform.localScale, INVERT_X); } } [HarmonyPatch(typeof(LG_Sign), "SetZoneInfo")] public static class LG_Sign__SetZoneInfo__Patch { public static void Postfix(LG_Sign __instance) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) __instance.m_text.transform.localScale = Vector3.Scale(__instance.m_text.transform.localScale, INVERT_X); } } [HarmonyPatch(typeof(LG_HSU), "Setup")] public static class LG_HSU__Setup__Patch { public static void Postfix(LG_HSU __instance) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //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) //IL_0046: Unknown result type (might be due to invalid IL or missing references) TextMeshPro serial = __instance.m_serial; if (!((Object)(object)serial == (Object)null)) { serial.transform.localScale = Vector3.Scale(serial.transform.localScale, INVERT_X); serial.transform.localPosition = new Vector3(-0.2889f, 0.559f, 0.5876f); } } } [HarmonyPatch(typeof(LG_PowerGenerator_Core), "Setup")] public static class LG_PowerGenerator_Core__Setup__Patch { public static void Postfix(LG_PowerGenerator_Core __instance) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ((Component)__instance).transform.localScale = INVERT_X; } } [HarmonyPatch(typeof(LG_WeakResourceContainer), "Setup")] public static class LG_WeakResourceContainer__Setup__Patch { public static void Postfix(LG_WeakResourceContainer __instance) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) LG_WeakResourceContainer_Graphics val = ((Il2CppObjectBase)__instance.m_graphics).TryCast(); if (!((Object)(object)val == (Object)null)) { val.m_serialNoText.transform.localScale = Vector3.Scale(val.m_serialNoText.transform.localScale, INVERT_X); } } } [HarmonyPatch(typeof(CP_Bioscan_Core), "Setup")] public static class CP_Bioscan_Core__Setup__Patch { public static void Postfix(CP_Bioscan_Core __instance) { //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) //IL_002c: Unknown result type (might be due to invalid IL or missing references) foreach (TextMeshPro componentsInChild in ((Component)__instance).GetComponentsInChildren(true)) { componentsInChild.transform.localScale = Vector3.Scale(componentsInChild.transform.localScale, INVERT_X); } } } [HarmonyPatch(typeof(LG_BulkheadDoorController_Core), "BuildBulkheadLogic")] public static class LG_BulkheadDoorController__BuildBulkheadLogic__Patch { public static void Postfix(LG_BulkheadDoorController_Core __instance) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) Transform val = ((Component)__instance).transform.Find("Graphics"); if ((Object)(object)val != (Object)null) { ((Component)val).transform.localScale = INVERT_X; } } } [HarmonyPatch(typeof(LG_SecurityDoor), "SetNavInfo")] public static class LG_SecurityDoor__SetNavInfo__Patch { public static void Postfix(LG_SecurityDoor __instance) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) GUIX_VirtualSceneLink componentInChildren = ((Component)__instance).GetComponentInChildren(true); if (!((Object)(object)componentInChildren == (Object)null)) { GUIX_Layer componentInChildren2 = ((Component)componentInChildren.m_virtualScene).gameObject.GetComponentInChildren(true); ((Component)componentInChildren2).transform.localScale = INVERT_X; ((Component)componentInChildren2).transform.localPosition = new Vector3(-0.8f, 0f, 0f); } } } [HarmonyPatch(typeof(LG_Door_Sync), "Setup")] public static class LG_Door_Sync__Setup__Patch { public static void Postfix(LG_Door_Sync __instance) { //IL_0023: 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_0058: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_018a: 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_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) LG_SecurityDoor val = ((Il2CppObjectBase)__instance.m_core).TryCast(); if ((Object)(object)val != (Object)null) { ((Component)val.m_doorBladeCuller).transform.localScale = INVERT_X; Transform val2 = ((Component)val).transform.Find("crossing"); if ((Object)(object)val2 == (Object)null) { ManualLogSource l = Plugin.L; bool flag = default(bool); BepInExWarningLogInterpolatedStringHandler val3 = new BepInExWarningLogInterpolatedStringHandler(43, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("SecurityDoor with no 'crossing' child GO?: "); ((BepInExLogInterpolatedStringHandler)val3).AppendFormatted(((Object)val).name); } l.LogWarning(val3); return; } for (int i = 0; i < val2.childCount; i++) { Transform child = val2.GetChild(i); bool flag2 = ((Object)child).name.Contains("BulkheadDoor_Hazard_Screen", StringComparison.InvariantCultureIgnoreCase); if (((Object)child).name.StartsWith("Interaction", StringComparison.InvariantCultureIgnoreCase) || flag2) { ((Component)child).transform.localPosition = Vector3.Scale(((Component)child).transform.localPosition, INVERT_X); if (flag2) { ((Component)child).transform.localScale = Vector3.Scale(((Component)child).transform.localScale, INVERT_X); FlipAllBoxCollidersInChildren(child); } } } return; } LG_WeakDoor val4 = ((Il2CppObjectBase)__instance.m_core).TryCast(); if ((Object)(object)val4 == (Object)null) { return; } Transform transform = ((Component)val4.m_doorBladeCuller).transform; for (int j = 0; j < transform.childCount; j++) { Transform child2 = transform.GetChild(j); if (!((Object)child2).name.Contains("blade_animation", StringComparison.InvariantCultureIgnoreCase)) { continue; } { foreach (TextMeshPro componentsInChild in ((Component)child2).GetComponentsInChildren(true)) { Transform parent = componentsInChild.transform.parent; parent.localScale = Vector3.Scale(parent.localScale, INVERT_X); parent.localPosition = Vector3.Scale(parent.localPosition, INVERT_X); } break; } } } } [HarmonyPatch(typeof(InputMapper), "DoGetAxis")] public static class InputMapper__DoGetAxis__Patch { public static void Postfix(InputMapper __instance, InputAction action, ref float __result) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 if ((int)action == 1 || (int)action == 3) { eFocusState currentState = FocusStateManager.CurrentState; if ((int)currentState == 4 || currentState - 6 <= 1 || ((int)currentState == 13 && ((Behaviour)CM_PageMap.Current).isActiveAndEnabled)) { __result *= -1f; } } } } [HarmonyPatch(typeof(LG_WeakLock), "Setup")] public static class LG_WeakLock__Setup__Patch { public static void Postfix(LG_WeakLock __instance) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) __instance.m_gfxLocked.transform.localScale = Vector3.Scale(__instance.m_gfxLocked.transform.localScale, INVERT_X); __instance.m_gfxTampering.transform.localScale = Vector3.Scale(__instance.m_gfxTampering.transform.localScale, INVERT_X); } } [HarmonyPatch(typeof(ThrowingWeapon), "Setup")] public static class ThrowingWeapon__Setup__Patch { public static void Postfix(ThrowingWeapon __instance) { //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_000c: Unknown result type (might be due to invalid IL or missing references) __instance.m_throwObjChargeWorldPosOffset = Vector3.Scale(__instance.m_throwObjChargeWorldPosOffset, INVERT_X); } } [HarmonyPatch(typeof(BulletWeapon), "OnGearSpawnComplete")] public static class BulletWeapon__OnGearSpawnComplete__Patch { public static void Postfix(BulletWeapon __instance) { ScanForThermalSights(((Component)__instance).transform); } public static void ScanForThermalSights(Transform trans) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < trans.childCount; i++) { Transform child = trans.GetChild(i); if (((Object)child).name.Contains("Sight", StringComparison.InvariantCultureIgnoreCase) && ((Object)child).name.Contains("Thermal", StringComparison.InvariantCultureIgnoreCase)) { child.localScale = Vector3.Scale(child.localScale, INVERT_X); break; } ScanForThermalSights(child); } } } [HarmonyPatch(typeof(FirstPersonItemHolder), "Setup")] public static class FirstPersonItemHolder__Setup__Patch { public static void Postfix(FirstPersonItemHolder __instance) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) ((Component)__instance).transform.localScale = INVERT_X; Enumerator enumerator = PlayerBackpackManager.GetBackpack(SNet.LocalPlayer).BackpackItems.GetEnumerator(); while (enumerator.MoveNext()) { BackpackItem current = enumerator.Current; if (!((Object)(object)current.Instance == (Object)null)) { ((Component)current.Instance).transform.localScale = Vector3.one; } } } } [HarmonyPatch(typeof(PlayerFPSBody), "SetLeftArmTargetPosRot")] public static class PlayerFPSBody__SetLeftArmTargetPosRot__Patch { public static bool Prefix(PlayerFPSBody __instance, Transform targetTrans) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)targetTrans == (Object)null) { return false; } __instance.m_tempRot = targetTrans.rotation; __instance.m_tempRot *= Quaternion.Euler(__instance.m_leftHandIKRotOffset); __instance.m_leftHandIKTarget.SetPositionAndRotation(targetTrans.position + -1f * targetTrans.right * __instance.m_leftHandIKPosOffset.x + targetTrans.up * __instance.m_leftHandIKPosOffset.y + targetTrans.forward * __instance.m_leftHandIKPosOffset.z, __instance.m_tempRot); return false; } } [HarmonyPatch(typeof(PlayerFPSBody), "SetRightArmTargetPosRot")] public static class PlayerFPSBody__SetRightArmTargetPosRot__Patch { public static bool Prefix(PlayerFPSBody __instance, Transform targetTrans) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)targetTrans == (Object)null) { return false; } __instance.m_tempRot = targetTrans.rotation; __instance.m_tempRot *= Quaternion.Euler(__instance.m_rightHandIKRotOffset); __instance.m_rightHandIKTarget.SetPositionAndRotation(targetTrans.position + -1f * targetTrans.right * __instance.m_rightHandIKPosOffset.x + targetTrans.up * __instance.m_rightHandIKPosOffset.y + targetTrans.forward * __instance.m_rightHandIKPosOffset.z, __instance.m_tempRot); return false; } } public static Vector3 INVERT_X = new Vector3(-1f, 1f, 1f); internal static void FlipAllBoxCollidersInChildren(Transform transform) { //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) //IL_002c: Unknown result type (might be due to invalid IL or missing references) foreach (BoxCollider componentsInChild in ((Component)transform).GetComponentsInChildren(true)) { ((Component)componentsInChild).transform.localScale = Vector3.Scale(((Component)componentsInChild).transform.localScale, INVERT_X); } } } [BepInPlugin("dev.aurirex.gtfo.mirrormode", "Mirror_Mode", "1.3.1")] public class Plugin : BasePlugin { public const string GUID = "dev.aurirex.gtfo.mirrormode"; public const string MOD_NAME = "Mirror_Mode"; public const string VERSION = "1.3.1"; internal static ManualLogSource L; private static readonly Harmony _harmony = new Harmony("dev.aurirex.gtfo.mirrormode"); private static ApplyMirror _gameMirrorApplier; public override void Load() { L = ((BasePlugin)this).Log; ClassInjector.RegisterTypeInIl2Cpp(); _harmony.PatchAll(Assembly.GetExecutingAssembly()); L.LogInfo((object)"Plugin loaded!"); } public static void SetGameMirror(bool active) { if (!((Object)(object)_gameMirrorApplier == (Object)null)) { ((Behaviour)_gameMirrorApplier).enabled = active; } } public static void SetGUIRootMirrored(bool active) { //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) GuiManager.Current.m_root.localScale = (active ? Patches.INVERT_X : Vector3.one); } internal static void ApplyShaderTo(FPSCamera camera) { if (!((Object)(object)camera == (Object)null)) { GameObject gameObject = ((Component)camera).gameObject; if ((Object)(object)gameObject.GetComponent() == (Object)null) { _gameMirrorApplier = gameObject.AddComponent(); } } } } }