Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of RealerCheatUnlocks v1.0.4
RealerCheatUnlocks.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using CheatUnlocks; using HG; using HarmonyLib; using IL.RoR2.UI; using IL.RoR2.UI.LogBook; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using On; using On.RoR2.UI; using RoR2; using RoR2.Stats; using RoR2.UI; using RoR2.UI.LogBook; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; [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: AssemblyCompany("RealerCheatUnlocks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+da4c4cd87b72e124f9e1da568daeae2b1b45fca4")] [assembly: AssemblyProduct("RealerCheatUnlocks")] [assembly: AssemblyTitle("RealerCheatUnlocks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RealerCheatUnlocks { [BepInPlugin("prodzpod.RealerCheatUnlocks", "RealerCheatUnlocks", "1.0.3")] public class Main : BaseUnityPlugin { public abstract class CheatUnlocksButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { public AchievementDef achievementDef; public UnlockableDef unlockableDef; public bool canRelock = true; public HGButton hgButton; public bool unlocked { get { UserProfile userProfile = GetUserProfile(); return userProfile != null && userProfile.HasUnlockable(unlockableDef.cachedName); } } public bool achieved { get { UserProfile userProfile = GetUserProfile(); return userProfile != null && userProfile.HasAchievement(achievementDef.identifier); } } public abstract void OnPointerClick(PointerEventData eventData); public UserProfile GetUserProfile() { LocalUser? obj = ((IEnumerable<LocalUser>)LocalUserManager.readOnlyLocalUsersList).FirstOrDefault((Func<LocalUser, bool>)((LocalUser v) => v != null)); return (obj != null) ? obj.userProfile : null; } public bool TryToggle() { UserProfile userProfile = GetUserProfile(); bool flag = achievementDef != null && !achieved; bool flag2 = (Object)(object)unlockableDef != (Object)null && !unlocked; if (flag || flag2) { Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); if (flag) { userProfile.AddAchievement(achievementDef.identifier, true); } if (flag2) { userProfile.GrantUnlockable(unlockableDef); } return true; } if (canRelock) { Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject); if (achievementDef != null) { userProfile.RevokeAchievement(achievementDef.identifier); } if ((Object)(object)unlockableDef != (Object)null) { userProfile.RevokeUnlockable(unlockableDef); userProfile.RequestEventualSave(); } return false; } return true; } } public class CheatUnlocksLoadoutButton : CheatUnlocksButton { public Sprite icon; public string title; public string body; public Color color; public UnityAction onClick; public Node viewableNode; public static Sprite lockedIcon; public override void OnPointerClick(PointerEventData eventData) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //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) //IL_0066: 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_00db: 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) if ((int)eventData.button != 1) { return; } TooltipProvider component = ((Component)hgButton).GetComponent<TooltipProvider>(); ViewableTag val = ((viewableNode != null) ? ((Component)hgButton).gameObject.GetComponent<ViewableTag>() : null); if (TryToggle()) { ((MPButton)hgButton).disableGamepadClick = false; ((MPButton)hgButton).disablePointerClick = false; component.titleColor = color; component.overrideTitleText = Language.GetString(title); component.overrideBodyText = Language.GetString(body); ((UnityEvent)((Button)hgButton).onClick).AddListener(onClick); if (Object.op_Implicit((Object)(object)val)) { val.viewableName = viewableNode.fullName; val.Refresh(); } ((Image)((Selectable)hgButton).targetGraphic).sprite = icon; } else { ((MPButton)hgButton).disableGamepadClick = true; ((MPButton)hgButton).disablePointerClick = true; component.titleColor = Color.gray; component.overrideTitleText = Language.GetString("UNIDENTIFIED"); component.overrideBodyText = unlockableDef.getHowToUnlockString(); ((UnityEvent)((Button)hgButton).onClick).RemoveListener(onClick); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.tagInstance)) { Object.Destroy((Object)(object)val.tagInstance); val.tagInstance = null; } ((Image)((Selectable)hgButton).targetGraphic).sprite = lockedIcon; } } } public class CheatUnlocksSurvivorButton : CheatUnlocksButton { public SurvivorIconController controller; public override void OnPointerClick(PointerEventData eventData) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)eventData.button == 1) { if (TryToggle()) { controller.survivorIsUnlocked = true; ((MPButton)hgButton).disableGamepadClick = false; ((MPButton)hgButton).disablePointerClick = false; } else { controller.survivorIsUnlocked = false; ((MPButton)hgButton).disableGamepadClick = true; ((MPButton)hgButton).disablePointerClick = true; } controller.UpdateAvailability(); controller.Rebuild(); } } } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__7_2; public static Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node> <>9__7_3; public static Manipulator <>9__7_0; public static hook_Rebuild <>9__7_1; internal void <Awake>b__7_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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_0052: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_0093: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent") }); val.Emit(OpCodes.Dup); val.Emit(OpCodes.Ldarg, 2); val.Emit(OpCodes.Ldarg, 3); val.Emit(OpCodes.Ldarg, 4); val.Emit(OpCodes.Ldarg, 5); val.Emit(OpCodes.Ldarg, 6); val.Emit(OpCodes.Ldarg, 7); val.Emit(OpCodes.Ldarg, 8); val.EmitDelegate<Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>>((Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>)delegate(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode) { //IL_007e: 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) if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null)) { CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>(); cheatUnlocksLoadoutButton.hgButton = button; cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName); cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName); if (viewableNode != null) { cheatUnlocksLoadoutButton.viewableNode = viewableNode; } cheatUnlocksLoadoutButton.icon = icon; cheatUnlocksLoadoutButton.title = titleToken; cheatUnlocksLoadoutButton.body = bodyToken; cheatUnlocksLoadoutButton.color = tooltipColor; cheatUnlocksLoadoutButton.onClick = callback; } }); } internal bool <Awake>b__7_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent"); } internal void <Awake>b__7_3(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode) { //IL_007e: 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) if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null)) { CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>(); cheatUnlocksLoadoutButton.hgButton = button; cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName); cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName); if (viewableNode != null) { cheatUnlocksLoadoutButton.viewableNode = viewableNode; } cheatUnlocksLoadoutButton.icon = icon; cheatUnlocksLoadoutButton.title = titleToken; cheatUnlocksLoadoutButton.body = bodyToken; cheatUnlocksLoadoutButton.color = tooltipColor; cheatUnlocksLoadoutButton.onClick = callback; } } internal void <Awake>b__7_1(orig_Rebuild orig, SurvivorIconController self) { orig.Invoke(self); if ((Object)(object)self.survivorDef.unlockableDef == (Object)null) { if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() != (Object)null) { Object.Destroy((Object)(object)((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>()); } return; } CheatUnlocksSurvivorButton cheatUnlocksSurvivorButton; if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() == (Object)null) { cheatUnlocksSurvivorButton = ((Component)self).gameObject.AddComponent<CheatUnlocksSurvivorButton>(); cheatUnlocksSurvivorButton.hgButton = self.hgButton; cheatUnlocksSurvivorButton.controller = self; } else { cheatUnlocksSurvivorButton = ((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>(); } cheatUnlocksSurvivorButton.unlockableDef = self.survivorDef.unlockableDef; cheatUnlocksSurvivorButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksSurvivorButton.unlockableDef.cachedName); } } public const string PluginGUID = "prodzpod.RealerCheatUnlocks"; public const string PluginAuthor = "prodzpod"; public const string PluginName = "RealerCheatUnlocks"; public const string PluginVersion = "1.0.3"; public static ManualLogSource Log; public static PluginInfo pluginInfo; public static Harmony Harmony; public void Awake() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown //IL_004f: 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) //IL_005a: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; Log = ((BaseUnityPlugin)this).Logger; Harmony = new Harmony("prodzpod.RealerCheatUnlocks"); CheatUnlocksLoadoutButton.lockedIcon = LegacyResourcesAPI.Load<Sprite>("Textures/MiscIcons/texUnlockIcon"); CheatUnlocksPlugin.Awake(); object obj = <>c.<>9__7_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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_0052: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_0093: Unknown result type (might be due to invalid IL or missing references) ILCursor val3 = new ILCursor(il); val3.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<GameObject>(x, "GetComponent") }); val3.Emit(OpCodes.Dup); val3.Emit(OpCodes.Ldarg, 2); val3.Emit(OpCodes.Ldarg, 3); val3.Emit(OpCodes.Ldarg, 4); val3.Emit(OpCodes.Ldarg, 5); val3.Emit(OpCodes.Ldarg, 6); val3.Emit(OpCodes.Ldarg, 7); val3.Emit(OpCodes.Ldarg, 8); val3.EmitDelegate<Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>>((Action<HGButton, Sprite, string, string, Color, UnityAction, string, Node>)delegate(HGButton button, Sprite icon, string titleToken, string bodyToken, Color tooltipColor, UnityAction callback, string unlockableName, Node viewableNode) { //IL_007e: 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) if (!Utility.IsNullOrWhiteSpace(unlockableName) && !((Object)(object)UnlockableCatalog.GetUnlockableDef(unlockableName) == (Object)null)) { CheatUnlocksLoadoutButton cheatUnlocksLoadoutButton = ((Component)button).gameObject.AddComponent<CheatUnlocksLoadoutButton>(); cheatUnlocksLoadoutButton.hgButton = button; cheatUnlocksLoadoutButton.unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockableName); cheatUnlocksLoadoutButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksLoadoutButton.unlockableDef.cachedName); if (viewableNode != null) { cheatUnlocksLoadoutButton.viewableNode = viewableNode; } cheatUnlocksLoadoutButton.icon = icon; cheatUnlocksLoadoutButton.title = titleToken; cheatUnlocksLoadoutButton.body = bodyToken; cheatUnlocksLoadoutButton.color = tooltipColor; cheatUnlocksLoadoutButton.onClick = callback; } }); }; <>c.<>9__7_0 = val; obj = (object)val; } Row.AddButton += (Manipulator)obj; object obj2 = <>c.<>9__7_1; if (obj2 == null) { hook_Rebuild val2 = delegate(orig_Rebuild orig, SurvivorIconController self) { orig.Invoke(self); if ((Object)(object)self.survivorDef.unlockableDef == (Object)null) { if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() != (Object)null) { Object.Destroy((Object)(object)((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>()); } } else { CheatUnlocksSurvivorButton cheatUnlocksSurvivorButton; if ((Object)(object)((Component)self).GetComponent<CheatUnlocksSurvivorButton>() == (Object)null) { cheatUnlocksSurvivorButton = ((Component)self).gameObject.AddComponent<CheatUnlocksSurvivorButton>(); cheatUnlocksSurvivorButton.hgButton = self.hgButton; cheatUnlocksSurvivorButton.controller = self; } else { cheatUnlocksSurvivorButton = ((Component)self).gameObject.GetComponent<CheatUnlocksSurvivorButton>(); } cheatUnlocksSurvivorButton.unlockableDef = self.survivorDef.unlockableDef; cheatUnlocksSurvivorButton.achievementDef = AchievementManager.GetAchievementDefFromUnlockable(cheatUnlocksSurvivorButton.unlockableDef.cachedName); } }; <>c.<>9__7_1 = val2; obj2 = (object)val2; } SurvivorIconController.Rebuild += (hook_Rebuild)obj2; } } } namespace CheatUnlocks { public class CheatUnlocksPlugin : BaseUnityPlugin { public class CheatUnlocksLogbookButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { public Entry entry; public LogBookController logbookController; public string achievementName; public PickupIndex pickupIndex = PickupIndex.none; public UnlockableDef unlockableDef; public PerBodyStatDef perBodyStatDef; public BodyIndex bodyIndex = (BodyIndex)(-1); public UnityAction entryOnClick; public bool canRelock = true; public HGButton hgButton; public bool hgButtonDisableGamepadClick; public bool hgButtonDisablePointerClick; public Image hgButtonImageOnInteractable; public Action<GameObject, EntryStatus> initializeGraphics = InitializeGraphicsDefault; public static void InitializeGraphicsDefault(GameObject buttonObject, EntryStatus entryStatus) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 ChildLocator component = buttonObject.GetComponent<ChildLocator>(); RawImage val = null; if (Object.op_Implicit((Object)(object)component)) { val = ((Component)component.FindChild("BG")).GetComponent<RawImage>(); } if (Object.op_Implicit((Object)(object)val)) { if (entryStatus - 4 <= 1) { ((Behaviour)val).enabled = true; } } } public static void InitializeGraphicsChallenge(GameObject buttonObject, EntryStatus entryStatus) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected I4, but got Unknown ChildLocator component = buttonObject.GetComponent<ChildLocator>(); switch (entryStatus - 2) { case 0: ((Component)component.FindChild("HasBeenUnlocked")).gameObject.SetActive(false); break; case 1: ((Component)component.FindChild("HasBeenUnlocked")).gameObject.SetActive(false); ((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false); break; case 2: ((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false); break; case 3: ((Component)component.FindChild("CantBeAchieved")).gameObject.SetActive(false); break; } } public void Start() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown entryOnClick = (UnityAction)delegate { if (entry != null && Object.op_Implicit((Object)(object)logbookController)) { logbookController.ViewEntry(entry); } }; } public void OnPointerClick(PointerEventData eventData) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_0063: 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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Invalid comparison between Unknown and I4 //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_0419: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) if ((int)eventData.button != 1) { return; } UserProfile val = logbookController.LookUpUserProfile(); bool flag = !string.IsNullOrEmpty(achievementName); bool flag2 = flag && val.HasAchievement(achievementName); bool flag3 = Object.op_Implicit((Object)(object)unlockableDef); bool flag4 = flag3 && val.HasUnlockable(unlockableDef); bool flag5 = pickupIndex != PickupIndex.none; bool flag6 = perBodyStatDef != null; if ((flag && !flag2) || (flag3 && !flag4)) { Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); if (flag && !flag2) { foreach (AchievementNotificationPanel instances in AchievementNotificationPanel.instancesList) { Object.Destroy((Object)(object)((Component)instances).gameObject); } val.AddAchievement(achievementName, true); } if (flag3 && !flag4) { val.GrantUnlockable(unlockableDef); } } else if (flag5 && !val.HasDiscoveredPickup(pickupIndex)) { val.SetPickupDiscovered(pickupIndex, true); Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); } else if (flag6 && val.statSheet.GetStatValueULong(perBodyStatDef.FindStatDef(bodyIndex)) == 0) { val.statSheet.PushStatValue(perBodyStatDef, bodyIndex, 1uL); Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); } else if (canRelock) { if (flag && flag2) { foreach (AchievementNotificationPanel instances2 in AchievementNotificationPanel.instancesList) { Object.Destroy((Object)(object)((Component)instances2).gameObject); } val.RevokeAchievement(achievementName); } if (flag3 && flag4) { val.RevokeUnlockable(unlockableDef); val.RequestEventualSave(); } if (flag5) { val.SetPickupDiscovered(pickupIndex, false); } if (entry.viewableNode != null) { ViewableTag component = ((Component)hgButton).gameObject.GetComponent<ViewableTag>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.tagInstance)) { Object.Destroy((Object)(object)component.tagInstance); component.tagInstance = null; } } Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject); } EntryStatus status = entry.GetStatus(val); TooltipContent tooltipContent = entry.GetTooltipContent(val, status); entry.category.initializeElementGraphics?.Invoke(((Component)hgButton).gameObject, entry, status, val); if (initializeGraphics != null) { initializeGraphics(((Component)hgButton).gameObject, status); } if ((int)status >= 4) { ((UnityEvent)((Button)hgButton).onClick).AddListener(entryOnClick); ((MPButton)hgButton).disableGamepadClick = hgButtonDisableGamepadClick; ((MPButton)hgButton).disablePointerClick = hgButtonDisablePointerClick; hgButton.imageOnInteractable = hgButtonImageOnInteractable; } else { ((UnityEvent)((Button)hgButton).onClick).RemoveListener(entryOnClick); ((MPButton)hgButton).disableGamepadClick = true; ((MPButton)hgButton).disablePointerClick = true; hgButton.imageOnInteractable = null; } Color titleColor = tooltipContent.titleColor; titleColor.a = 0.2f; hgButton.hoverToken = Language.GetStringFormatted("LOGBOOK_HOVER_DESCRIPTION_FORMAT", new object[3] { ((TooltipContent)(ref tooltipContent)).GetTitleText(), ((TooltipContent)(ref tooltipContent)).GetBodyText(), ColorUtility.ToHtmlStringRGBA(titleColor) }); } } public class CheatUnlocksEclipseButton : MonoBehaviour, IPointerClickHandler, IEventSystemHandler { public LocalUser localUser; public SurvivorDef survivorDef; public EclipseDifficultyMedalDisplay medalDisplay; public void OnEnable() { InstanceTracker.Add<CheatUnlocksEclipseButton>(this); } public void OnDisable() { InstanceTracker.Remove<CheatUnlocksEclipseButton>(this); } public void SetEclipseLevelUnlocked(bool unlock) { UnlockableDef safe = ListUtils.GetSafe<UnlockableDef>(EclipseRun.GetEclipseLevelUnlockablesForSurvivor(survivorDef), medalDisplay.eclipseLevel - EclipseRun.minUnlockableEclipseLevel + 1); if (unlock) { localUser.userProfile.GrantUnlockable(safe); bool flag = true; foreach (SurvivorDef orderedSurvivorDef in SurvivorCatalog.orderedSurvivorDefs) { if (medalDisplay.ShouldDisplaySurvivor(orderedSurvivorDef, localUser)) { int localUserSurvivorCompletedEclipseLevel = EclipseRun.GetLocalUserSurvivorCompletedEclipseLevel(localUser, orderedSurvivorDef); if (localUserSurvivorCompletedEclipseLevel < medalDisplay.eclipseLevel) { flag = false; break; } } } if (Object.op_Implicit((Object)(object)medalDisplay.iconImage)) { medalDisplay.iconImage.sprite = (flag ? medalDisplay.completeSprite : medalDisplay.incompleteSprite); } } else { localUser.userProfile.RevokeUnlockable(safe); localUser.userProfile.RequestEventualSave(); if (Object.op_Implicit((Object)(object)medalDisplay.iconImage)) { medalDisplay.iconImage.sprite = medalDisplay.unearnedSprite; } } } public void OnPointerClick(PointerEventData eventData) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)eventData.button != 1) { return; } UnlockableDef safe = ListUtils.GetSafe<UnlockableDef>(EclipseRun.GetEclipseLevelUnlockablesForSurvivor(survivorDef), medalDisplay.eclipseLevel - EclipseRun.minUnlockableEclipseLevel + 1); if (!Object.op_Implicit((Object)(object)safe)) { return; } if (!localUser.userProfile.HasUnlockable(safe)) { foreach (CheatUnlocksEclipseButton item in from x in InstanceTracker.GetInstancesList<CheatUnlocksEclipseButton>() where (Object)(object)x.survivorDef == (Object)(object)survivorDef && x.medalDisplay.eclipseLevel <= medalDisplay.eclipseLevel select x) { item.SetEclipseLevelUnlocked(unlock: true); } Util.PlaySound("Play_UI_menuClick", ((Component)RoR2Application.instance).gameObject); Util.PlaySound("Play_UI_achievementUnlock", ((Component)RoR2Application.instance).gameObject); return; } foreach (CheatUnlocksEclipseButton item2 in from x in InstanceTracker.GetInstancesList<CheatUnlocksEclipseButton>() where (Object)(object)x.survivorDef == (Object)(object)survivorDef && x.medalDisplay.eclipseLevel >= medalDisplay.eclipseLevel select x) { item2.SetEclipseLevelUnlocked(unlock: false); } Util.PlaySound("Play_UI_artifactDeselect", ((Component)RoR2Application.instance).gameObject); } } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__0_4; public static Func<Instruction, bool> <>9__0_5; public static Func<Instruction, bool> <>9__0_8; public static Func<Instruction, bool> <>9__0_10; public static Func<Instruction, bool> <>9__0_11; public static Action<HGButton, Entry, LogBookController> <>9__0_2; public static Manipulator <>9__0_0; public static hook_Refresh <>9__0_1; internal void <Awake>b__0_0(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0162: 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) <>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0(); ILCursor val = new ILCursor(il); CS$<>8__locals0.hgButtonPos = -1; CS$<>8__locals0.entryDisplayClassPos = -1; CS$<>8__locals0.entryFieldRef = null; int num = default(int); if (!val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref CS$<>8__locals0.hgButtonPos), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, ref num), (Instruction x) => ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover") }) || !val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref CS$<>8__locals0.entryDisplayClassPos), (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref CS$<>8__locals0.entryFieldRef), (Instruction x) => ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode") }) || !val.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, CS$<>8__locals0.hgButtonPos), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable") })) { return; } val.Emit(OpCodes.Ldloc, CS$<>8__locals0.hgButtonPos); val.Emit(OpCodes.Ldloc, CS$<>8__locals0.entryDisplayClassPos); val.Emit(OpCodes.Ldfld, CS$<>8__locals0.entryFieldRef); val.Emit(OpCodes.Ldarg, 0); val.EmitDelegate<Action<HGButton, Entry, LogBookController>>((Action<HGButton, Entry, LogBookController>)delegate(HGButton button, Entry entry, LogBookController logbookController) { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Invalid comparison between Unknown and I4 //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Invalid comparison between Unknown and I4 //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass0_1 <>c__DisplayClass0_ = default(<>c__DisplayClass0_1); <>c__DisplayClass0_.button = button; <>c__DisplayClass0_.entry = entry; <>c__DisplayClass0_.logbookController = logbookController; switch (<>c__DisplayClass0_.entry.category.nameToken) { case "LOGBOOK_CATEGORY_ACHIEVEMENTS": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)<>c__DisplayClass0_.entry.extraData).identifier; cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)<>c__DisplayClass0_.entry.extraData).unlockableRewardIdentifier); cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge; break; } case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)<>c__DisplayClass0_.entry.extraData; PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex); ItemIndex itemIndex = pickupDef.itemIndex; EquipmentIndex equipmentIndex = pickupDef.equipmentIndex; if ((int)itemIndex != -1) { <>c__DisplayClass0_2 CS$<>8__locals3 = new <>c__DisplayClass0_2 { itemDef = ItemCatalog.GetItemDef(itemIndex) }; if (Object.op_Implicit((Object)(object)CS$<>8__locals3.itemDef) && Object.op_Implicit((Object)(object)CS$<>8__locals3.itemDef.unlockableDef)) { AchievementDef val5 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals3.itemDef.unlockableDef.cachedName)); if (val5 != null) { cheatUnlocksLogbookButton2.achievementName = val5.identifier; } cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals3.itemDef.unlockableDef; } } else if ((int)equipmentIndex != -1) { <>c__DisplayClass0_3 CS$<>8__locals1 = new <>c__DisplayClass0_3 { equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex) }; if (Object.op_Implicit((Object)(object)CS$<>8__locals1.equipmentDef) && Object.op_Implicit((Object)(object)CS$<>8__locals1.equipmentDef.unlockableDef)) { AchievementDef val6 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals1.equipmentDef.unlockableDef.cachedName)); if (val6 != null) { cheatUnlocksLogbookButton2.achievementName = val6.identifier; } cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals1.equipmentDef.unlockableDef; } } break; } case "LOGBOOK_CATEGORY_MONSTER": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); CharacterBody val7 = (CharacterBody)<>c__DisplayClass0_.entry.extraData; DeathRewards component = ((Component)val7).GetComponent<DeathRewards>(); if (Object.op_Implicit((Object)(object)component)) { cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef; } cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst; cheatUnlocksLogbookButton4.bodyIndex = val7.bodyIndex; break; } case "LOGBOOK_CATEGORY_STAGE": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)<>c__DisplayClass0_.entry.extraData).baseSceneName); if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName)) { cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName; } break; } case "LOGBOOK_CATEGORY_SURVIVOR": { <>c__DisplayClass0_4 CS$<>8__locals2 = new <>c__DisplayClass0_4(); CheatUnlocksLogbookButton cheatUnlocksLogbookButton = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); CharacterBody val2 = (CharacterBody)<>c__DisplayClass0_.entry.extraData; SurvivorDef val3 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val2).gameObject); CS$<>8__locals2.unlockableDef = val3.unlockableDef; if (Object.op_Implicit((Object)(object)CS$<>8__locals2.unlockableDef)) { AchievementDef val4 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals2.unlockableDef.cachedName)); if (val4 != null) { cheatUnlocksLogbookButton.achievementName = val4.identifier; } cheatUnlocksLogbookButton.unlockableDef = CS$<>8__locals2.unlockableDef; } cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins; cheatUnlocksLogbookButton.bodyIndex = val2.bodyIndex; break; } } }); } internal bool <Awake>b__0_4(Instruction x) { int num = default(int); return ILPatternMatchingExt.MatchLdcI4(x, ref num); } internal bool <Awake>b__0_5(Instruction x) { return ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover"); } internal bool <Awake>b__0_8(Instruction x) { return ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode"); } internal bool <Awake>b__0_10(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 1); } internal bool <Awake>b__0_11(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable"); } internal void <Awake>b__0_2(HGButton button, Entry entry, LogBookController logbookController) { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Invalid comparison between Unknown and I4 //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Invalid comparison between Unknown and I4 //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass0_1 <>c__DisplayClass0_ = default(<>c__DisplayClass0_1); <>c__DisplayClass0_.button = button; <>c__DisplayClass0_.entry = entry; <>c__DisplayClass0_.logbookController = logbookController; switch (<>c__DisplayClass0_.entry.category.nameToken) { case "LOGBOOK_CATEGORY_ACHIEVEMENTS": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)<>c__DisplayClass0_.entry.extraData).identifier; cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)<>c__DisplayClass0_.entry.extraData).unlockableRewardIdentifier); cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge; break; } case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)<>c__DisplayClass0_.entry.extraData; PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex); ItemIndex itemIndex = pickupDef.itemIndex; EquipmentIndex equipmentIndex = pickupDef.equipmentIndex; if ((int)itemIndex != -1) { <>c__DisplayClass0_2 CS$<>8__locals2 = new <>c__DisplayClass0_2 { itemDef = ItemCatalog.GetItemDef(itemIndex) }; if (Object.op_Implicit((Object)(object)CS$<>8__locals2.itemDef) && Object.op_Implicit((Object)(object)CS$<>8__locals2.itemDef.unlockableDef)) { AchievementDef val4 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals2.itemDef.unlockableDef.cachedName)); if (val4 != null) { cheatUnlocksLogbookButton2.achievementName = val4.identifier; } cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals2.itemDef.unlockableDef; } } else { if ((int)equipmentIndex == -1) { break; } <>c__DisplayClass0_3 CS$<>8__locals0 = new <>c__DisplayClass0_3 { equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex) }; if (Object.op_Implicit((Object)(object)CS$<>8__locals0.equipmentDef) && Object.op_Implicit((Object)(object)CS$<>8__locals0.equipmentDef.unlockableDef)) { AchievementDef val5 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals0.equipmentDef.unlockableDef.cachedName)); if (val5 != null) { cheatUnlocksLogbookButton2.achievementName = val5.identifier; } cheatUnlocksLogbookButton2.unlockableDef = CS$<>8__locals0.equipmentDef.unlockableDef; } } break; } case "LOGBOOK_CATEGORY_MONSTER": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); CharacterBody val6 = (CharacterBody)<>c__DisplayClass0_.entry.extraData; DeathRewards component = ((Component)val6).GetComponent<DeathRewards>(); if (Object.op_Implicit((Object)(object)component)) { cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef; } cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst; cheatUnlocksLogbookButton4.bodyIndex = val6.bodyIndex; break; } case "LOGBOOK_CATEGORY_STAGE": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)<>c__DisplayClass0_.entry.extraData).baseSceneName); if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName)) { cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName; } break; } case "LOGBOOK_CATEGORY_SURVIVOR": { <>c__DisplayClass0_4 CS$<>8__locals1 = new <>c__DisplayClass0_4(); CheatUnlocksLogbookButton cheatUnlocksLogbookButton = <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_); CharacterBody val = (CharacterBody)<>c__DisplayClass0_.entry.extraData; SurvivorDef val2 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val).gameObject); CS$<>8__locals1.unlockableDef = val2.unlockableDef; if (Object.op_Implicit((Object)(object)CS$<>8__locals1.unlockableDef)) { AchievementDef val3 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == CS$<>8__locals1.unlockableDef.cachedName)); if (val3 != null) { cheatUnlocksLogbookButton.achievementName = val3.identifier; } cheatUnlocksLogbookButton.unlockableDef = CS$<>8__locals1.unlockableDef; } cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins; cheatUnlocksLogbookButton.bodyIndex = val.bodyIndex; break; } } } internal void <Awake>b__0_1(orig_Refresh orig, EclipseDifficultyMedalDisplay self) { orig.Invoke(self); CheatUnlocksEclipseButton cheatUnlocksEclipseButton = ((Component)self).GetComponent<CheatUnlocksEclipseButton>(); if (!Object.op_Implicit((Object)(object)cheatUnlocksEclipseButton)) { cheatUnlocksEclipseButton = ((Component)self).gameObject.AddComponent<CheatUnlocksEclipseButton>(); } cheatUnlocksEclipseButton.medalDisplay = self; cheatUnlocksEclipseButton.localUser = LocalUserManager.GetFirstLocalUser(); cheatUnlocksEclipseButton.survivorDef = ((cheatUnlocksEclipseButton.localUser != null) ? cheatUnlocksEclipseButton.localUser.userProfile.GetSurvivorPreference() : null); } } [CompilerGenerated] private sealed class <>c__DisplayClass0_0 { public int hgButtonPos; public int entryDisplayClassPos; public FieldReference entryFieldRef; internal bool <Awake>b__3(Instruction x) { return ILPatternMatchingExt.MatchLdloc(x, ref hgButtonPos); } internal bool <Awake>b__6(Instruction x) { return ILPatternMatchingExt.MatchLdloc(x, ref entryDisplayClassPos); } internal bool <Awake>b__7(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, ref entryFieldRef); } internal bool <Awake>b__9(Instruction x) { return ILPatternMatchingExt.MatchLdloc(x, hgButtonPos); } } [StructLayout(LayoutKind.Auto)] [CompilerGenerated] private struct <>c__DisplayClass0_1 { public HGButton button; public Entry entry; public LogBookController logbookController; } [CompilerGenerated] private sealed class <>c__DisplayClass0_2 { public ItemDef itemDef; internal bool <Awake>b__13(AchievementDef x) { return x.unlockableRewardIdentifier == itemDef.unlockableDef.cachedName; } } [CompilerGenerated] private sealed class <>c__DisplayClass0_3 { public EquipmentDef equipmentDef; internal bool <Awake>b__14(AchievementDef x) { return x.unlockableRewardIdentifier == equipmentDef.unlockableDef.cachedName; } } [CompilerGenerated] private sealed class <>c__DisplayClass0_4 { public UnlockableDef unlockableDef; internal bool <Awake>b__15(AchievementDef x) { return x.unlockableRewardIdentifier == unlockableDef.cachedName; } } public static void Awake() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0162: 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) ILCursor val3 = new ILCursor(il); int hgButtonPos = -1; int entryDisplayClassPos = -1; FieldReference entryFieldRef = null; int num = default(int); if (val3.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref hgButtonPos), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, ref num), (Instruction x) => ILPatternMatchingExt.MatchStfld<HGButton>(x, "updateTextOnHover") }) && val3.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref entryDisplayClassPos), (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref entryFieldRef), (Instruction x) => ILPatternMatchingExt.MatchLdfld<Entry>(x, "viewableNode") }) && val3.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, hgButtonPos), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<Selectable>(x, "set_interactable") })) { val3.Emit(OpCodes.Ldloc, hgButtonPos); val3.Emit(OpCodes.Ldloc, entryDisplayClassPos); val3.Emit(OpCodes.Ldfld, entryFieldRef); val3.Emit(OpCodes.Ldarg, 0); val3.EmitDelegate<Action<HGButton, Entry, LogBookController>>((Action<HGButton, Entry, LogBookController>)delegate(HGButton button, Entry entry, LogBookController logbookController) { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Invalid comparison between Unknown and I4 //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Invalid comparison between Unknown and I4 //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) switch (entry.category.nameToken) { case "LOGBOOK_CATEGORY_ACHIEVEMENTS": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton3 = MakeCheatButton(); cheatUnlocksLogbookButton3.achievementName = ((AchievementDef)entry.extraData).identifier; cheatUnlocksLogbookButton3.unlockableDef = UnlockableCatalog.GetUnlockableDef(((AchievementDef)entry.extraData).unlockableRewardIdentifier); cheatUnlocksLogbookButton3.initializeGraphics = CheatUnlocksLogbookButton.InitializeGraphicsChallenge; break; } case "LOGBOOK_CATEGORY_ITEMANDEQUIPMENT": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton2 = MakeCheatButton(); cheatUnlocksLogbookButton2.pickupIndex = (PickupIndex)entry.extraData; PickupDef pickupDef = PickupCatalog.GetPickupDef(cheatUnlocksLogbookButton2.pickupIndex); ItemIndex itemIndex = pickupDef.itemIndex; EquipmentIndex equipmentIndex = pickupDef.equipmentIndex; if ((int)itemIndex != -1) { ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if (Object.op_Implicit((Object)(object)itemDef) && Object.op_Implicit((Object)(object)itemDef.unlockableDef)) { AchievementDef val7 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == itemDef.unlockableDef.cachedName)); if (val7 != null) { cheatUnlocksLogbookButton2.achievementName = val7.identifier; } cheatUnlocksLogbookButton2.unlockableDef = itemDef.unlockableDef; } } else if ((int)equipmentIndex != -1) { EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex); if (Object.op_Implicit((Object)(object)equipmentDef) && Object.op_Implicit((Object)(object)equipmentDef.unlockableDef)) { AchievementDef val8 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == equipmentDef.unlockableDef.cachedName)); if (val8 != null) { cheatUnlocksLogbookButton2.achievementName = val8.identifier; } cheatUnlocksLogbookButton2.unlockableDef = equipmentDef.unlockableDef; } } break; } case "LOGBOOK_CATEGORY_MONSTER": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton4 = MakeCheatButton(); CharacterBody val9 = (CharacterBody)entry.extraData; DeathRewards component = ((Component)val9).GetComponent<DeathRewards>(); if (Object.op_Implicit((Object)(object)component)) { cheatUnlocksLogbookButton4.unlockableDef = component.logUnlockableDef; } cheatUnlocksLogbookButton4.perBodyStatDef = PerBodyStatDef.killsAgainst; cheatUnlocksLogbookButton4.bodyIndex = val9.bodyIndex; break; } case "LOGBOOK_CATEGORY_STAGE": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton5 = MakeCheatButton(); UnlockableDef unlockableLogFromBaseSceneName = SceneCatalog.GetUnlockableLogFromBaseSceneName(((SceneDef)entry.extraData).baseSceneName); if (Object.op_Implicit((Object)(object)unlockableLogFromBaseSceneName)) { cheatUnlocksLogbookButton5.unlockableDef = unlockableLogFromBaseSceneName; } break; } case "LOGBOOK_CATEGORY_SURVIVOR": { CheatUnlocksLogbookButton cheatUnlocksLogbookButton = MakeCheatButton(); CharacterBody val4 = (CharacterBody)entry.extraData; SurvivorDef val5 = SurvivorCatalog.FindSurvivorDefFromBody(((Component)val4).gameObject); UnlockableDef unlockableDef = val5.unlockableDef; if (Object.op_Implicit((Object)(object)unlockableDef)) { AchievementDef val6 = ((IEnumerable<AchievementDef>)(object)AchievementManager.allAchievementDefs).FirstOrDefault((Func<AchievementDef, bool>)((AchievementDef x) => x.unlockableRewardIdentifier == unlockableDef.cachedName)); if (val6 != null) { cheatUnlocksLogbookButton.achievementName = val6.identifier; } cheatUnlocksLogbookButton.unlockableDef = unlockableDef; } cheatUnlocksLogbookButton.perBodyStatDef = PerBodyStatDef.totalWins; cheatUnlocksLogbookButton.bodyIndex = val4.bodyIndex; break; } } CheatUnlocksLogbookButton MakeCheatButton() { CheatUnlocksLogbookButton cheatUnlocksLogbookButton6 = ((Component)button).gameObject.AddComponent<CheatUnlocksLogbookButton>(); cheatUnlocksLogbookButton6.entry = entry; cheatUnlocksLogbookButton6.logbookController = logbookController; cheatUnlocksLogbookButton6.hgButton = button; cheatUnlocksLogbookButton6.hgButtonDisableGamepadClick = ((MPButton)button).disableGamepadClick; cheatUnlocksLogbookButton6.hgButtonDisablePointerClick = ((MPButton)button).disablePointerClick; cheatUnlocksLogbookButton6.hgButtonImageOnInteractable = button.imageOnInteractable; return cheatUnlocksLogbookButton6; } }); } }; <>c.<>9__0_0 = val; obj = (object)val; } LogBookController.BuildEntriesPage += (Manipulator)obj; object obj2 = <>c.<>9__0_1; if (obj2 == null) { hook_Refresh val2 = delegate(orig_Refresh orig, EclipseDifficultyMedalDisplay self) { orig.Invoke(self); CheatUnlocksEclipseButton cheatUnlocksEclipseButton = ((Component)self).GetComponent<CheatUnlocksEclipseButton>(); if (!Object.op_Implicit((Object)(object)cheatUnlocksEclipseButton)) { cheatUnlocksEclipseButton = ((Component)self).gameObject.AddComponent<CheatUnlocksEclipseButton>(); } cheatUnlocksEclipseButton.medalDisplay = self; cheatUnlocksEclipseButton.localUser = LocalUserManager.GetFirstLocalUser(); cheatUnlocksEclipseButton.survivorDef = ((cheatUnlocksEclipseButton.localUser != null) ? cheatUnlocksEclipseButton.localUser.userProfile.GetSurvivorPreference() : null); }; <>c.<>9__0_1 = val2; obj2 = (object)val2; } EclipseDifficultyMedalDisplay.Refresh += (hook_Refresh)obj2; } [CompilerGenerated] internal static CheatUnlocksLogbookButton <Awake>g__MakeCheatButton|0_12(ref <>c__DisplayClass0_1 P_0) { CheatUnlocksLogbookButton cheatUnlocksLogbookButton = ((Component)P_0.button).gameObject.AddComponent<CheatUnlocksLogbookButton>(); cheatUnlocksLogbookButton.entry = P_0.entry; cheatUnlocksLogbookButton.logbookController = P_0.logbookController; cheatUnlocksLogbookButton.hgButton = P_0.button; cheatUnlocksLogbookButton.hgButtonDisableGamepadClick = ((MPButton)P_0.button).disableGamepadClick; cheatUnlocksLogbookButton.hgButtonDisablePointerClick = ((MPButton)P_0.button).disablePointerClick; cheatUnlocksLogbookButton.hgButtonImageOnInteractable = P_0.button.imageOnInteractable; return cheatUnlocksLogbookButton; } } }