Decompiled source of signal decoder v1.0.4
plugins/SignalDecoder/SignalDecoder.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Logging; using EntityStates; using HG; using HG.Reflection; using HarmonyLib; using IL.RoR2; using IL.RoR2.CharacterAI; using IL.RoR2.UI.LogBook; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using MonoMod.Utils; using On.RoR2; using On.RoR2.CharacterAI; using On.RoR2.UI.LogBook; using On.RoR2.UI.MainMenu; using R2API; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.EntitlementManagement; using RoR2.ExpansionManagement; using RoR2.Items; using RoR2.Orbs; using RoR2.UI; using RoR2.UI.LogBook; using RoR2.UI.MainMenu; using RoR2BepInExPack; using SignalDecoder.Components; using SignalDecoder.Components.Tablet; using SignalDecoder.Components.TabletDisplay; using SignalDecoder.Components.UI; using SignalDecoder.Content; using SignalDecoder.Content.EntityStates.Finale; using SignalDecoder.Content.EntityStates.Tablet; using SignalDecoder.Content.EntityStates.Tablet.ancientloft; using SignalDecoder.Content.EntityStates.Tablet.foggyswamp; using SignalDecoder.Content.EntityStates.Tablet.goolake; using SignalDecoder.Content.EntityStates.Tablet.rootjungle; using SignalDecoder.Content.EntityStates.Tablet.wispgraveyard; using SignalDecoder.Content.EntityStates.TabletDisplay; using SignalDecoder.Encryption; using SignalDecoder.PortalDialer; using TMPro; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("SignalDecoder")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+58722924d9887befbf1c6bfd6af9354cffef9264")] [assembly: AssemblyProduct("SignalDecoder")] [assembly: AssemblyTitle("SignalDecoder")] [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] internal sealed class IsReadOnlyAttribute : Attribute { } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 SignalDecoder { internal static class CharacterDeathHook { public delegate void CharacterDeathHookDelegate(CharacterMaster characterMaster, ref bool preventGameOver); [CompilerGenerated] private static class <>O { public static Manipulator <0>__CharacterMaster_OnBodyDeath; } public static event CharacterDeathHookDelegate OnDeath; public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__CharacterMaster_OnBodyDeath; if (obj == null) { Manipulator val = CharacterMaster_OnBodyDeath; <>O.<0>__CharacterMaster_OnBodyDeath = val; obj = (object)val; } CharacterMaster.OnBodyDeath += (Manipulator)obj; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__CharacterMaster_OnBodyDeath; if (obj == null) { Manipulator val = CharacterMaster_OnBodyDeath; <>O.<0>__CharacterMaster_OnBodyDeath = val; obj = (object)val; } CharacterMaster.OnBodyDeath -= (Manipulator)obj; } private static void CharacterMaster_OnBodyDeath(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld<CharacterMaster>(x, "preventGameOver") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<bool, CharacterMaster, bool>>((Func<bool, CharacterMaster, bool>)delegate(bool preventGameOver, CharacterMaster instance) { CharacterDeathHook.OnDeath?.Invoke(instance, ref preventGameOver); return preventGameOver; }); } } } internal static class CharacterEvents { public delegate void CharacterBuffStacksChangedDelegate(CharacterBody body, BuffIndex buffType, int newCount); [CompilerGenerated] private static class <>O { public static hook_SetBuffCount <0>__CharacterBody_SetBuffCount; } public static event CharacterBuffStacksChangedDelegate CharacterBuffStacksChanged; public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__CharacterBody_SetBuffCount; if (obj == null) { hook_SetBuffCount val = CharacterBody_SetBuffCount; <>O.<0>__CharacterBody_SetBuffCount = val; obj = (object)val; } CharacterBody.SetBuffCount += (hook_SetBuffCount)obj; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__CharacterBody_SetBuffCount; if (obj == null) { hook_SetBuffCount val = CharacterBody_SetBuffCount; <>O.<0>__CharacterBody_SetBuffCount = val; obj = (object)val; } CharacterBody.SetBuffCount -= (hook_SetBuffCount)obj; } private static void CharacterBody_SetBuffCount(orig_SetBuffCount orig, CharacterBody self, BuffIndex buffType, int newCount) { //IL_0002: 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) orig.Invoke(self, buffType, newCount); CharacterEvents.CharacterBuffStacksChanged?.Invoke(self, buffType, newCount); } } internal static class HookLogHider { private delegate bool orig_HookWatcher_LogMethod(MemberInfo originalMethod, Assembly hookOwnerAssembly, bool added); private static bool _failedToApplyHook; private static Hook _disableLogHook; private static MemberInfo _lastLoggedOwnedMethod; public static bool HideHookLogs { get { if (!_failedToApplyHook && _disableLogHook != null && _disableLogHook.IsValid) { return _disableLogHook.IsApplied; } return false; } set { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown if (_failedToApplyHook || value == HideHookLogs) { return; } if (value) { if (_disableLogHook == null) { try { _disableLogHook = new Hook((MethodBase)typeof(RoR2BepInExPack).Assembly.GetType("RoR2BepInExPack.HookWatcher").GetMethod("LogMethod", BindingFlags.Static | BindingFlags.NonPublic), (Delegate)new Func<orig_HookWatcher_LogMethod, MemberInfo, Assembly, bool, bool>(disableHookLog)); return; } catch (Exception) { if (_disableLogHook != null) { _disableLogHook.Dispose(); _disableLogHook = null; } _failedToApplyHook = true; ManualLogSource logSource = PuzzlePlugin.LogSource; if (logSource != null) { logSource.LogError((object)"Failed to apply HookWatcher patch"); } return; } } _disableLogHook.Apply(); } else { Hook disableLogHook = _disableLogHook; if (disableLogHook != null) { disableLogHook.Undo(); } } } } private static bool disableHookLog(orig_HookWatcher_LogMethod orig, MemberInfo originalMethod, Assembly hookOwnerAssembly, bool added) { if (hookOwnerAssembly == Assembly.GetExecutingAssembly()) { _lastLoggedOwnedMethod = originalMethod; return true; } if (_lastLoggedOwnedMethod == originalMethod && Regex.IsMatch(hookOwnerAssembly.GetName().Name, "^DMDASM\\.(?:[A-F]|[\\d])+\\.Cecil$")) { return true; } _lastLoggedOwnedMethod = null; return orig(originalMethod, hookOwnerAssembly, added); } } public readonly struct ItemStack { public readonly ItemDef Item; public readonly int Count; public ItemStack(ItemDef item, int count) { Item = item; Count = count; } } internal static class LogbookEntryRestrictor { [CompilerGenerated] private static class <>O { public static Manipulator <0>__LogBookController_BuildCategories; } public static void Initailize() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__LogBookController_BuildCategories; if (obj == null) { Manipulator val = LogBookController_BuildCategories; <>O.<0>__LogBookController_BuildCategories = val; obj = (object)val; } LogBookController.BuildCategories += (Manipulator)obj; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__LogBookController_BuildCategories; if (obj == null) { Manipulator val = LogBookController_BuildCategories; <>O.<0>__LogBookController_BuildCategories = val; obj = (object)val; } LogBookController.BuildCategories -= (Manipulator)obj; } private static void LogBookController_BuildCategories(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ILCursor val = new ILCursor(il); MethodReference method2 = default(MethodReference); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref method2) && isEntriesBuilderMethod(method2) })) { val.EmitDelegate<Func<Entry[], Entry[]>>((Func<Entry[], Entry[]>)delegate(Entry[] entries) { List<Entry> list = new List<Entry>(entries.Length); foreach (Entry val2 in entries) { if (isValidEntry(val2)) { list.Add(val2); } } return (list.Count != entries.Length) ? list.ToArray() : entries; }); } static bool isEntriesBuilderMethod(MethodReference method) { if (Regex.IsMatch(((MemberReference)method).Name, "^Build\\w*Entries$")) { return Extensions.Is((MemberReference)(object)method.ReturnType, (MemberInfo)typeof(Entry[])); } return false; } } private static bool isValidEntry(Entry entry) { switch (entry.nameToken) { case "PUZZLE_CLUE_ITEM_NAME": case "ITEM_CRITGLASSES_NAME": case "ITEM_SPRINTBONUS_NAME": case "ITEM_SPRINTARMOR_NAME": case "GRANDPARENT_BODY_NAME": case "MAP_ANCIENTLOFT_TITLE": case "ITEM_WARDONLEVEL_NAME": case "ITEM_SQUIDTURRET_NAME": case "ITEM_GHOSTONKILL_NAME": case "ITEM_MOREMISSILE_NAME": case "ITEM_SHOCKNEARBY_NAME": case "ITEM_ARTIFACTKEY_NAME": case "MAP_SNOWYFOREST_TITLE": case "ITEM_BEETLEGLAND_NAME": case "ITEM_SCRAPYELLOW_NAME": case "MAP_GOLEMPLAINS_TITLE": case "ITEM_MISSILEVOID_NAME": case "ITEM_LUNARDAGGER_NAME": case "BEETLEGUARD_BODY_NAME": case "MAP_SULFURPOOLS_TITLE": case "EQUIPMENT_METEOR_NAME": case "HERMIT_CRAB_BODY_NAME": case "CLAYBRUISER_BODY_NAME": case "BEETLEQUEEN_BODY_NAME": case "GRAVEKEEPER_BODY_NAME": case "GREATERWISP_BODY_NAME": case "ITEM_REPULSIONARMORPLATE_NAME": case "ITEM_BONUSGOLDPACKONKILL_NAME": case "ITEM_ARMORREDUCTIONONHIT_NAME": case "ITEM_MONSTERSONSHRINEUSE_NAME": case "EQUIPMENT_COMMANDMISSILE_NAME": case "EQUIPMENT_LIFESTEALONHIT_NAME": case "EQUIPMENT_PASSIVEHEALING_NAME": case "EQUIPMENT_VENDINGMACHINE_NAME": case "ACHIEVEMENT_LOGCOLLECTOR_NAME": case "ACHIEVEMENT_MAGEFASTBOSS_NAME": case "ITEM_ATTACKSPEEDANDMOVESPEED_NAME": case "ITEM_ENERGIZEDONEQUIPMENTUSE_NAME": case "ITEM_LUNARPRIMARYREPLACEMENT_NAME": case "ITEM_LUNARSPECIALREPLACEMENT_NAME": case "ITEM_LUNARUTILITYREPLACEMENT_NAME": case "ACHIEVEMENT_FAILSHRINECHANCE_NAME": case "ACHIEVEMENT_KILLELITEMONSTER_NAME": case "ACHIEVEMENT_KILLTOTALENEMIES_NAME": case "ACHIEVEMENT_COMPLETE20STAGES_NAME": case "ACHIEVEMENT_MAXHEALINGSHRINE_NAME": case "ITEM_BARRIERONKILL_NAME": case "ITEM_HEALWHILESAFE_NAME": case "ITEM_ROBOBALLBUDDY_NAME": case "ITEM_HEALINGPOTION_NAME": case "ITEM_TREASURECACHE_NAME": case "MAP_WISPGRAVEYARD_TITLE": case "MAP_SHIPGRAVEYARD_TITLE": case "ITEM_TPHEALINGNOVA_NAME": case "ITEM_SLOWONHITVOID_NAME": case "ITEM_EXTRALIFEVOID_NAME": case "ITEM_RANDOMLYLUNAR_NAME": case "EQUIPMENT_RECYCLER_NAME": case "LUNAREXPLODER_BODY_NAME": case "CLAYGRENADIER_BODY_NAME": case "MEGACONSTRUCT_BODY_NAME": case "MAP_ARTIFACTWORLD_TITLE": case "ITEM_BEAR_NAME": case "ITEM_HOOF_NAME": case "ITEM_SEED_NAME": case "WISP_BODY_NAME": case "BELL_BODY_NAME": case "SCAV_BODY_NAME": case "MAP_MOON_TITLE": case "ENGI_BODY_NAME": case "MAGE_BODY_NAME": case "MERC_BODY_NAME": case "ITEM_BLEEDONHIT_NAME": case "ITEM_CRITDAMAGE_NAME": case "ITEM_FLATHEALTH_NAME": case "ITEM_HEADHUNTER_NAME": case "MAP_GOLDSHORES_TITLE": case "ITEM_GOLDONHURT_NAME": case "ITEM_HEALONCRIT_NAME": case "ITEM_NOVAONHEAL_NAME": case "ITEM_SCRAPWHITE_NAME": case "ITEM_SCRAPGREEN_NAME": case "ITEM_STICKYBOMB_NAME": case "ITEM_SHINYPEARL_NAME": case "ITEM_SPRINTWISP_NAME": case "MAP_FROZENWALL_TITLE": case "ITEM_CLOVERVOID_NAME": case "ITEM_REPEATHEAL_NAME": case "ITEM_SHIELDONLY_NAME": case "EQUIPMENT_TONIC_NAME": case "EQUIPMENT_FRUIT_NAME": case "LUNARGOLEM_BODY_NAME": case "VOIDJAILER_BODY_NAME": case "RAILGUNNER_BODY_NAME": case "MAP_BLACKBEACH_TITLE": case "MAP_FOGGYSWAMP_TITLE": case "MAP_ROOTJUNGLE_TITLE": case "ITEM_BOSSDAMAGEBONUS_NAME": case "ITEM_STUNCHANCEONHIT_NAME": case "ITEM_CRITGLASSESVOID_NAME": case "ITEM_MOVESPEEDONKILL_NAME": case "ITEM_INCREASEHEALING_NAME": case "EQUIPMENT_GUMMYCLONE_NAME": case "ITEM_KILLELITEFRENZY_NAME": case "ITEM_NOVAONLOWHEALTH_NAME": case "EQUIPMENT_BURNNEARBY_NAME": case "EQUIPMENT_BOSSHUNTER_NAME": case "EQUIPMENT_TEAMWARCRY_NAME": case "LEMURIANBRUISER_BODY_NAME": case "ACHIEVEMENT_LOOPONCE_NAME": case "ACHIEVEMENT_ENGIARMY_NAME": case "ACHIEVEMENT_FREEMAGE_NAME": case "ITEM_CROWBAR_NAME": case "ITEM_SYRINGE_NAME": case "IMPBOSS_BODY_NAME": case "ITEM_FEATHER_NAME": case "ITEM_ICERING_NAME": case "CAPTAIN_BODY_NAME": case "HERETIC_BODY_NAME": case "ITEM_MISSILE_NAME": case "ITEM_PHASING_NAME": case "VULTURE_BODY_NAME": case "BROTHER_BODY_NAME": case "VAGRANT_BODY_NAME": case "MAP_GOOLAKE_TITLE": case "TOOLBOT_BODY_NAME": case "TREEBOT_BODY_NAME": case "BANDIT2_BODY_NAME": case "ITEM_FIREWORK_NAME": case "ITEM_FIRERING_NAME": case "ITEM_SCRAPRED_NAME": case "ITEM_MUSHROOM_NAME": case "CLAYBOSS_BODY_NAME": case "HUNTRESS_BODY_NAME": case "ITEM_INFUSION_NAME": case "ITEM_BEHEMOTH_NAME": case "ITEM_TALISMAN_NAME": case "ITEM_BEARVOID_NAME": case "ITEM_LUNARSUN_NAME": case "EQUIPMENT_BFG_NAME": case "LEMURIAN_BODY_NAME": case "MAP_DAMPCAVE_TITLE": case "MAP_VOIDRAID_TITLE": case "COMMANDO_BODY_NAME": case "ITEM_FRAGILEDAMAGEBONUS_NAME": case "ITEM_CHAINLIGHTNINGVOID_NAME": case "ITEM_EXPLODEONDEATHVOID_NAME": case "ITEM_FOCUSEDCONVERGENCE_NAME": case "EQUIPMENT_MULTISHOPCARD_NAME": case "ACHIEVEMENT_ATTACKSPEED_NAME": case "ACHIEVEMENT_BURNTODEATH_NAME": case "ACHIEVEMENT_CLEANUPDUTY_NAME": case "ITEM_IGNITEONKILL_NAME": case "ITEM_BOUNCENEARBY_NAME": case "ITEM_DRONEWEAPONS_NAME": case "ITEM_LASERTURBINE_NAME": case "ITEM_LUNARTRINKET_NAME": case "ITEM_MUSHROOMVOID_NAME": case "VOIDINFESTOR_BODY_NAME": case "MINIMUSHROOM_BODY_NAME": case "VOIDSURVIVOR_BODY_NAME": case "ITEM_LUNARBADLUCK_NAME": case "EQUIPMENT_CLEANSE_NAME": case "EQUIPMENT_GATEWAY_NAME": case "EQUIPMENT_GOLDGAT_NAME": case "EQUIPMENT_JETPACK_NAME": case "EQUIPMENT_MOLOTOV_NAME": case "EQUIPMENT_SCANNER_NAME": case "ROBOBALLBOSS_BODY_NAME": case "FLYINGVERMIN_BODY_NAME": case "ROBOBALLMINI_BODY_NAME": case "VOIDBARNACLE_BODY_NAME": case "VOIDRAIDCRAB_BODY_NAME": case "VOIDMEGACRAB_BODY_NAME": case "ELECTRICWORM_BODY_NAME": case "MAP_MYSTERYSPACE_TITLE": case "ITEM_MEDKIT_NAME": case "ITEM_THORNS_NAME": case "PARENT_BODY_NAME": case "ITEM_CLOVER_NAME": case "ITEM_DAGGER_NAME": case "ITEM_ICICLE_NAME": case "BEETLE_BODY_NAME": case "VERMIN_BODY_NAME": case "MAP_BAZAAR_TITLE": case "LOADER_BODY_NAME": case "ITEM_NEARBYDAMAGEBONUS_NAME": case "ITEM_ATTACKSPEEDONCRIT_NAME": case "ACHIEVEMENT_HARDHITTER_NAME": case "ITEM_EQUIPMENTMAGAZINE_NAME": case "EQUIPMENT_FIREBALLDASH_NAME": case "ITEM_REGENERATINGSCRAP_NAME": case "ITEM_SPRINTOUTOFCOMBAT_NAME": case "ITEM_WARCRYONMULTIKILL_NAME": case "ITEM_BARRIERONOVERHEAL_NAME": case "ITEM_SIPHONONLOWHEALTH_NAME": case "ITEM_TITANGOLDDURINGTP_NAME": case "ITEM_AUTOCASTEQUIPMENT_NAME": case "ITEM_TREASURECACHEVOID_NAME": case "ITEM_ELEMENTALRINGVOID_NAME": case "SUPERROBOBALLBOSS_BODY_NAME": case "ACHIEVEMENT_STAYALIVE1_NAME": case "ACHIEVEMENT_DIE20TIMES_NAME": case "ITEM_OUTOFCOMBATARMOR_NAME": case "ITEM_VOIDMEGACRABITEM_NAME": case "ITEM_RANDOMDAMAGEZONE_NAME": case "EQUIPMENT_CRIPPLEWARD_NAME": case "EQUIPMENT_DRONEBACKUP_NAME": case "ACHIEVEMENT_DIE5TIMES_NAME": case "ACHIEVEMENT_MOVESPEED_NAME": case "ACHIEVEMENT_BEATARENA_NAME": case "ITEM_PERSONALSHIELD_NAME": case "ITEM_CHAINLIGHTNING_NAME": case "EQUIPMENT_LIGHTNING_NAME": case "ITEM_EXPLODEONDEATH_NAME": case "ITEM_STRENGTHENBURN_NAME": case "EQUIPMENT_GAINARMOR_NAME": case "ITEM_IMMUNETODEBUFF_NAME": case "ITEM_FIREBALLSONHIT_NAME": case "ITEM_BLEEDONHITVOID_NAME": case "EQUIPMENT_BLACKHOLE_NAME": case "EQUIPMENT_CRITONUSE_NAME": case "EQUIPMENT_SAWMERANG_NAME": case "MINORCONSTRUCT_BODY_NAME": case "ITEM_SECONDARYSKILLMAGAZINE_NAME": case "ITEM_RANDOMEQUIPMENTTRIGGER_NAME": case "ACHIEVEMENT_CARRYLUNARITEMS_NAME": case "ACHIEVEMENT_USETHREEPORTALS_NAME": case "ITEM_TOOTH_NAME": case "ITEM_KNURL_NAME": case "ITEM_PEARL_NAME": case "BISON_BODY_NAME": case "GOLEM_BODY_NAME": case "TITAN_BODY_NAME": case "CROCO_BODY_NAME": case "MAP_LAKES_TITLE": case "MAP_ARENA_TITLE": case "MAP_LIMBO_TITLE": case "ITEM_BANDOLIER_NAME": case "ITEM_DEATHMARK_NAME": case "ITEM_FREECHEST_NAME": case "ITEM_FALLBOOTS_NAME": case "JELLYFISH_BODY_NAME": case "NULLIFIER_BODY_NAME": case "ITEM_JUMPBOOST_NAME": case "ITEM_SLOWONHIT_NAME": case "ITEM_ALIENHEAD_NAME": case "ACIDLARVA_BODY_NAME": case "ITEM_EXTRALIFE_NAME": case "ITEM_PARENTEGG_NAME": case "ITEM_GOLDONHIT_NAME": case "TITANGOLD_BODY_NAME": case "LUNARWISP_BODY_NAME": case "MAGMAWORM_BODY_NAME": case "MAP_SKYMEADOW_TITLE": case "MAP_VOIDSTAGE_TITLE": case "ITEM_EXECUTELOWHEALTHELITE_NAME": case "ITEM_INTERSTELLARDESKPLANT_NAME": case "ITEM_EQUIPMENTMAGAZINEVOID_NAME": case "ITEM_HALFSPEEDDOUBLEHEALTH_NAME": case "ACHIEVEMENT_FINDDEVILALTAR_NAME": case "ACHIEVEMENT_FINDTIMEDCHEST_NAME": case "ACHIEVEMENT_MAJORMULTIKILL_NAME": case "ACHIEVEMENT_TREEBOTBIGHEAL_NAME": case "ACHIEVEMENT_LOADERSPEEDRUN_NAME": case "ITEM_PRIMARYSKILLSHURIKEN_NAME": case "ITEM_CAPTAINDEFENSEMATRIX_NAME": case "ITEM_PERMANENTDEBUFFONHIT_NAME": case "ITEM_UTILITYSKILLMAGAZINE_NAME": case "ITEM_BLEEDONHITANDEXPLODE_NAME": case "ITEM_LIGHTNINGSTRIKEONHIT_NAME": case "EQUIPMENT_DEATHPROJECTILE_NAME": case "ITEM_MINORCONSTRUCTONKILL_NAME": case "ACHIEVEMENT_KILLBOSSQUICK_NAME": case "ACHIEVEMENT_NEVERBACKDOWN_NAME": case "ACHIEVEMENT_MAGEMULTIKILL_NAME": case "ACHIEVEMENT_RESCUETREEBOT_NAME": case "ACHIEVEMENT_LOADERBIGSLAM_NAME": case "ITEM_HALFATTACKSPEEDHALFCOOLDOWNS_NAME": case "ACHIEVEMENT_DISCOVER10UNIQUETIER1_NAME": case "ACHIEVEMENT_FINDUNIQUENEWTSTATUES_NAME": case "ACHIEVEMENT_KILLBOSSQUANTITYINRUN_NAME": case "ACHIEVEMENT_COMPLETEUNKNOWNENDING_NAME": case "ACHIEVEMENT_CROCOCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_BANDIT2REVOLVERFINALE_NAME": case "ACHIEVEMENT_REPEATFIRSTTELEPORTER_NAME": case "ACHIEVEMENT_TOOLBOTBEATARENALATER_NAME": case "ACHIEVEMENT_MAGEAIRBORNEMULTIKILL_NAME": case "ACHIEVEMENT_MERCXSKILLSINYSECONDS_NAME": case "ACHIEVEMENT_OBTAINARTIFACTCOMMAND_NAME": case "ITEM_LUNARSECONDARYREPLACEMENT_NAME": case "ACHIEVEMENT_COMPLETETELEPORTER_NAME": case "ACHIEVEMENT_DISCOVER5EQUIPMENT_NAME": case "ACHIEVEMENT_SUICIDEHERMITCRABS_NAME": case "ACHIEVEMENT_CROCOKILLSCAVENGER_NAME": case "ACHIEVEMENT_COMPLETEMAINENDING_NAME": case "ACHIEVEMENT_COMPLETEVOIDENDING_NAME": case "ACHIEVEMENT_OBTAINARTIFACTBOMB_NAME": case "GUP_BODY_NAME": case "IMP_BODY_NAME": case "ACHIEVEMENT_COMMANDOCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_HUNTRESSCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_REPEATEDLYDUPLICATEITEMS_NAME": case "ACHIEVEMENT_OBTAINARTIFACTSINGLEMONSTERTYPE_NAME": case "ACHIEVEMENT_RAILGUNNERCONSECUTIVEWEAKPOINTS_NAME": case "ACHIEVEMENT_COMPLETETELEPORTERWITHOUTINJURY_NAME": case "ACHIEVEMENT_MERCCOMPLETETRIALWITHFULLHEALTH_NAME": case "ACHIEVEMENT_LOADERKILLLOADERS_NAME": case "ACHIEVEMENT_MULTICOMBATSHRINE_NAME": case "ACHIEVEMENT_ENGIKILLBOSSQUICK_NAME": case "ACHIEVEMENT_HARDELITEBOSSKILL_NAME": case "ACHIEVEMENT_KILLELITESMILESTONE_NAME": case "ACHIEVEMENT_TOTALDRONESREPAIRED_NAME": case "ACHIEVEMENT_TOTALMONEYCOLLECTED_NAME": case "ACHIEVEMENT_COMPLETETHREESTAGES_NAME": case "ACHIEVEMENT_MERCDONTTOUCHGROUND_NAME": case "ACHIEVEMENT_TREEBOTDUNKCLAYBOSS_NAME": case "ACHIEVEMENT_CAPTAINBUYMEGADRONE_NAME": case "ACHIEVEMENT_OBTAINARTIFACTGLASS_NAME": case "ACHIEVEMENT_KILLELEMENTALLEMURIANS_NAME": case "ACHIEVEMENT_COMPLETEPRISMATICTRIAL_NAME": case "ACHIEVEMENT_COMPLETE30STAGESCAREER_NAME": case "ACHIEVEMENT_COMPLETEMAINENDINGHARD_NAME": case "ACHIEVEMENT_BANDIT2STACKSUPERBLEED_NAME": case "ACHIEVEMENT_TOOLBOTGUARDTELEPORTER_NAME": case "ACHIEVEMENT_LOADERCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_OBTAINARTIFACTDELUSION_NAME": case "ACHIEVEMENT_OBTAINARTIFACTDEVOTION_NAME": case "ACHIEVEMENT_OBTAINARTIFACTMIXENEMY_NAME": case "ACHIEVEMENT_AUTOMATIONACTIVATION_NAME": case "ACHIEVEMENT_ENGICLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_MAGECLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_MERCCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_OBTAINARTIFACTENIGMA_NAME": case "ACHIEVEMENT_OBTAINARTIFACTSWARMS_NAME": case "ACHIEVEMENT_KILLGOLDTITANINONECYCLE_NAME": case "ACHIEVEMENT_COMPLETEMULTIBOSSSHRINE_NAME": case "ACHIEVEMENT_HUNTRESSCOLLECTCROWBARS_NAME": case "ACHIEVEMENT_BANDIT2CONSECUTIVERESET_NAME": case "ACHIEVEMENT_BANDIT2CLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_TOOLBOTCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_TREEBOTCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_CAPTAINCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_DEFEATSUPERROBOBALLBOSS_NAME": case "ACHIEVEMENT_OBTAINARTIFACTTEAMDEATH_NAME": case "ACHIEVEMENT_CAPTAINSUPPLYDROPFINALE_NAME": case "ACHIEVEMENT_OBTAINARTIFACTELITEONLY_NAME": case "ACHIEVEMENT_OBTAINARTIFACTSACRIFICE_NAME": case "ACHIEVEMENT_COMMANDOKILLOVERLOADINGWORM_NAME": case "ACHIEVEMENT_COMMANDOFASTFIRSTSTAGECLEAR_NAME": case "ACHIEVEMENT_RAILGUNNERAIRBORNEMULTIKILL_NAME": case "ACHIEVEMENT_RAILGUNNERDEALMASSIVEDAMAGE_NAME": case "ACHIEVEMENT_COMMANDONONLUNARENDURANCE_NAME": case "ACHIEVEMENT_TOOLBOTKILLIMPBOSSWITHBFG_NAME": case "ACHIEVEMENT_CAPTAINVISITSEVERALSTAGES_NAME": case "ACHIEVEMENT_OBTAINARTIFACTSHADOWCLONE_NAME": case "ACHIEVEMENT_OBTAINARTIFACTWISPONDEATH_NAME": case "ACHIEVEMENT_HUNTRESSALLGLAIVEBOUNCESKILL_NAME": case "ACHIEVEMENT_VOIDSURVIVORCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_ENGICLEARTELEPORTERWITHZEROMONSTERS_NAME": case "ACHIEVEMENT_OBTAINARTIFACTMONSTERTEAMGAINSITEMS_NAME": case "ACHIEVEMENT_TREEBOTLOWHEALTHTELEPORTER_NAME": case "ACHIEVEMENT_OBTAINARTIFACTWEAKASSKNEES_NAME": case "ACHIEVEMENT_OBTAINARTIFACTFRIENDLYFIRE_NAME": case "ACHIEVEMENT_RAILGUNNERCLEARGAMEMONSOON_NAME": case "ACHIEVEMENT_CROCOKILLWEAKENEMIESMILESTONE_NAME": case "ACHIEVEMENT_CROCOTOTALINFECTIONSMILESTONE_NAME": case "ACHIEVEMENT_CHARGETELEPORTERWHILENEARDEATH_NAME": case "ACHIEVEMENT_COMPLETETHREESTAGESWITHOUTHEALING_NAME": case "ACHIEVEMENT_HUNTRESSMAINTAINFULLHEALTHONFROZENWALL_NAME": case "ACHIEVEMENT_OBTAINARTIFACTRANDOMSURVIVORONRESPAWN_NAME": return true; default: return false; } } } internal static class MiscCommands { private static readonly FieldRef<Action<UserProfile>> _onUserProfileViewedViewablesChangedFieldRef; static MiscCommands() { FieldInfo field = typeof(UserProfile).GetField("onUserProfileViewedViewablesChanged", BindingFlags.Static | BindingFlags.NonPublic); if (field != null) { _onUserProfileViewedViewablesChangedFieldRef = AccessTools.StaticFieldRefAccess<Action<UserProfile>>(field); } } [ConCommand(commandName = "set_viewable_viewed")] private static void CCSetViewableViewed(ConCommandArgs args) { string argString = ((ConCommandArgs)(ref args)).GetArgString(0); bool argBool = ((ConCommandArgs)(ref args)).GetArgBool(1); LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser == null) { return; } UserProfile userProfile = firstLocalUser.userProfile; if (userProfile == null) { return; } bool flag; if (argBool) { if (!userProfile.viewedViewables.Contains(argString)) { userProfile.viewedViewables.Add(argString); flag = true; } else { flag = false; } } else { flag = userProfile.viewedViewables.Remove(argString); } if (flag) { if (_onUserProfileViewedViewablesChangedFieldRef != null) { _onUserProfileViewedViewablesChangedFieldRef.Invoke()?.Invoke(userProfile); } userProfile.RequestEventualSave(); } Debug.Log((object)("Set viewable '" + argString + "' to " + (argBool ? "viewed" : "unviewed"))); } } internal static class MissingDLCNotification { public static void Apply() { LanguageAPI.Add("POPUP_MISSING_DLC_HEADER", "DLC not found"); LanguageAPI.Add("POPUP_MISSING_DLC_DESCRIPTION", "This puzzle requires '{0}' be owned and active"); } public static void Undo() { } public static bool TryCreatePopup() { //IL_0005: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) ExpansionDef val = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC1/Common/DLC1.asset").WaitForCompletion(); if (((BaseUserEntitlementTracker<LocalUser>)(object)EntitlementManager.localUserEntitlementTracker).AnyUserHasEntitlement(val.requiredEntitlement)) { return false; } Object.Destroy((Object)(object)PuzzlePlugin.Instance); SimpleDialogBox val2 = SimpleDialogBox.Create((MPEventSystem)null); val2.headerToken = new TokenParamsPair("POPUP_MISSING_DLC_HEADER", Array.Empty<object>()); val2.descriptionToken = new TokenParamsPair("POPUP_MISSING_DLC_DESCRIPTION", new object[1] { Language.GetString(val.nameToken) }); val2.AddCancelButton("PAUSE_QUIT_TO_DESKTOP", Array.Empty<object>()); OnDestroyCallback.AddCallback(((Component)val2).gameObject, (Action<OnDestroyCallback>)delegate { Application.Quit(); }); return true; } } internal static class MultiplayerDisabler { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__BaseMainMenuScreen_OnEnter; public static Action <1>__onUpdate; } public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__BaseMainMenuScreen_OnEnter; if (obj == null) { hook_OnEnter val = BaseMainMenuScreen_OnEnter; <>O.<0>__BaseMainMenuScreen_OnEnter = val; obj = (object)val; } BaseMainMenuScreen.OnEnter += (hook_OnEnter)obj; RoR2Application.onUpdate += onUpdate; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown object obj = <>O.<0>__BaseMainMenuScreen_OnEnter; if (obj == null) { hook_OnEnter val = BaseMainMenuScreen_OnEnter; <>O.<0>__BaseMainMenuScreen_OnEnter = val; obj = (object)val; } BaseMainMenuScreen.OnEnter -= (hook_OnEnter)obj; RoR2Application.onUpdate -= onUpdate; } private static void onUpdate() { if (PlatformSystems.lobbyManager.isInLobby) { PlatformSystems.lobbyManager.LeaveLobby(); if (Object.op_Implicit((Object)(object)MainMenuController.instance)) { MainMenuController.instance.SetDesiredMenuScreen(MainMenuController.instance.titleMenuScreen); } else { Console.instance.SubmitCmd((NetworkUser)null, "disconnect", false); } } } private static void BaseMainMenuScreen_OnEnter(orig_OnEnter orig, BaseMainMenuScreen self, MainMenuController mainMenuController) { orig.Invoke(self, mainMenuController); if ((Object)(object)self == (Object)(object)mainMenuController.titleMenuScreen) { Transform val = ((Component)self).transform.Find("SafeZone/GenericMenuButtonPanel/JuicePanel/GenericMenuButton (Multiplayer)"); Selectable val2 = default(Selectable); if (Object.op_Implicit((Object)(object)val) && ((Component)val).TryGetComponent<Selectable>(ref val2)) { val2.interactable = false; } } } } internal static class PuzzleClueLogbookItem { private class LogbookButtonTracker : MonoBehaviour { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__1_0; internal void <Awake>b__1_0() { Application.OpenURL(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)PuzzlePlugin.Instance).Info.Location) ?? string.Empty, "Attached_Files")); } } private GameObject _buttonObject; private void Awake() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown Transform val = ((Component)this).transform.Find("NakedButton (Back)"); if (Object.op_Implicit((Object)(object)val)) { _buttonObject = Object.Instantiate<GameObject>(((Component)val).gameObject, ((Component)this).transform); ((Object)_buttonObject).name = "OpenPuzzleFolderButton"; Transform transform = _buttonObject.transform; ((RectTransform)((transform is RectTransform) ? transform : null)).anchoredPosition = new Vector2(210f, 0f); _buttonObject.GetComponent<LanguageTextMeshController>().token = "PUZZLE_CLUE_OPEN_PLUGIN_FOLDER"; HGButton component = _buttonObject.GetComponent<HGButton>(); ((Button)component).onClick = new ButtonClickedEvent(); ButtonClickedEvent onClick = ((Button)component).onClick; object obj = <>c.<>9__1_0; if (obj == null) { UnityAction val2 = delegate { Application.OpenURL(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)PuzzlePlugin.Instance).Info.Location) ?? string.Empty, "Attached_Files")); }; <>c.<>9__1_0 = val2; obj = (object)val2; } ((UnityEvent)onClick).AddListener((UnityAction)obj); ((UnityEvent)((Button)component).onClick).AddListener(new UnityAction(component.OnClickCustom)); } else { PuzzlePlugin.LogSource.LogError((object)"Failed to find log page back button"); } } private void OnEnable() { if (Object.op_Implicit((Object)(object)_buttonObject)) { _buttonObject.SetActive(true); } } private void OnDisable() { if (Object.op_Implicit((Object)(object)_buttonObject)) { _buttonObject.SetActive(false); } } private void OnDestroy() { if (Object.op_Implicit((Object)(object)_buttonObject)) { Object.Destroy((Object)(object)_buttonObject); } } public static void SetButtonActive(GameObject pageObject, bool active) { LogbookButtonTracker logbookButtonTracker = default(LogbookButtonTracker); if (pageObject.TryGetComponent<LogbookButtonTracker>(ref logbookButtonTracker)) { ((Behaviour)logbookButtonTracker).enabled = active; } else if (active) { pageObject.AddComponent<LogbookButtonTracker>(); } } } [CompilerGenerated] private static class <>O { public static hook_BuildPickupEntries <0>__LogBookController_BuildPickupEntries; public static hook_SetEntry <1>__LogBookPage_SetEntry; public static GetStatusDelegate <2>__getClueItemStatus; public static GetTooltipContentDelegate <3>__getClueTooltipContent; public static Action<PageBuilder> <4>__cluePageBuilder; } public const string CLUE_ITEM_NAME_TOKEN = "PUZZLE_CLUE_ITEM_NAME"; private const string CLUE_ITEM_DESCRIPTION_1_TOKEN = "PUZZLE_CLUE_ITEM_DESCRIPTION_1"; private const string CLUE_ITEM_DESCRIPTION_2_TOKEN = "PUZZLE_CLUE_ITEM_DESCRIPTION_2"; private const string OPEN_PLUGIN_FOLDER_BUTTON_TOKEN = "PUZZLE_CLUE_OPEN_PLUGIN_FOLDER"; private const string CLUE_ITEM_VIEWABLE_NAME = "/Logbook/LOGBOOK_CATEGORY_ITEMANDEQUIPMENT/PUZZLE_CLUE_ITEM_NAME"; private const string CLUE_ITEM_NOT_VIEWED_POPUP_TITLE_TOKEN = "CLUE_ITEM_NOT_VIEWED_POPUP_TITLE"; private const string CLUE_ITEM_NOT_VIEWED_POPUP_DESCRIPTION_TOKEN = "CLUE_ITEM_NOT_VIEWED_POPUP_DESCRIPTION"; private static Entry _clueLogbookEntry; internal static void Setup() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown object obj = <>O.<0>__LogBookController_BuildPickupEntries; if (obj == null) { hook_BuildPickupEntries val = LogBookController_BuildPickupEntries; <>O.<0>__LogBookController_BuildPickupEntries = val; obj = (object)val; } LogBookController.BuildPickupEntries += (hook_BuildPickupEntries)obj; object obj2 = <>O.<1>__LogBookPage_SetEntry; if (obj2 == null) { hook_SetEntry val2 = LogBookPage_SetEntry; <>O.<1>__LogBookPage_SetEntry = val2; obj2 = (object)val2; } LogBookPage.SetEntry += (hook_SetEntry)obj2; LanguageAPI.Add("PUZZLE_CLUE_ITEM_NAME", "????"); LanguageAPI.Add("PUZZLE_CLUE_ITEM_DESCRIPTION_1", "It seems to give off a certain measurable and identifiable resonance, and all I can draw from this thing is this signal on repeat.. it's obviously a coded message of some kind.\r\n\r\nI uploaded the data to the system and it sent some locked files through, labeled X1 and X2. I have some decoding resources saved here on this terminal but... I just don't get it.\r\n\r\nIf anyone finds this - it means they may have found me already - I'd say give it a crack. \r\n\r\nThey're hiding something.\r\n\r\n-M"); LanguageAPI.Add("PUZZLE_CLUE_ITEM_DESCRIPTION_2", "Signal data:\r\n\r\n<style=cMono>LODGE nUMb\r\nFACT cAweD\r\nHaG HUBCAP\r\ndoubtaBLe\r\nbroadCast\r\ncrEPE HeAL\r\nrEVAlUIng</style>"); LanguageAPI.Add("PUZZLE_CLUE_OPEN_PLUGIN_FOLDER", "Access Files"); LanguageAPI.Add("CLUE_ITEM_NOT_VIEWED_POPUP_TITLE", "New User Detected"); LanguageAPI.Add("CLUE_ITEM_NOT_VIEWED_POPUP_DESCRIPTION", "1 logbook entr(ies) unaccounted for"); } internal static void Undo() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown object obj = <>O.<0>__LogBookController_BuildPickupEntries; if (obj == null) { hook_BuildPickupEntries val = LogBookController_BuildPickupEntries; <>O.<0>__LogBookController_BuildPickupEntries = val; obj = (object)val; } LogBookController.BuildPickupEntries -= (hook_BuildPickupEntries)obj; object obj2 = <>O.<1>__LogBookPage_SetEntry; if (obj2 == null) { hook_SetEntry val2 = LogBookPage_SetEntry; <>O.<1>__LogBookPage_SetEntry = val2; obj2 = (object)val2; } LogBookPage.SetEntry -= (hook_SetEntry)obj2; } public static bool TryCreatePopup(out SimpleDialogBox dialogBox) { //IL_003b: 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) dialogBox = null; LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); UserProfile val = ((firstLocalUser != null) ? firstLocalUser.userProfile : null); if (val == null || val.HasViewedViewable("/Logbook/LOGBOOK_CATEGORY_ITEMANDEQUIPMENT/PUZZLE_CLUE_ITEM_NAME")) { return false; } dialogBox = SimpleDialogBox.Create((MPEventSystem)null); dialogBox.headerToken = new TokenParamsPair("CLUE_ITEM_NOT_VIEWED_POPUP_TITLE", Array.Empty<object>()); dialogBox.descriptionToken = new TokenParamsPair("CLUE_ITEM_NOT_VIEWED_POPUP_DESCRIPTION", Array.Empty<object>()); dialogBox.AddCancelButton(CommonLanguageTokens.ok, Array.Empty<object>()); return true; } private static EntryStatus getClueItemStatus(in Entry entry, UserProfile viewerProfile) { return (EntryStatus)4; } private static TooltipContent getClueTooltipContent(in Entry entry, UserProfile userProfile, EntryStatus status) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //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) TooltipContent result = default(TooltipContent); result.titleToken = "PUZZLE_CLUE_ITEM_NAME"; result.titleColor = entry.color; return result; } private static void cluePageBuilder(PageBuilder builder) { builder.AddSimpleTextPanel(Language.GetString("PUZZLE_CLUE_ITEM_DESCRIPTION_1")); builder.AddSimpleTextPanel(Language.GetString("PUZZLE_CLUE_ITEM_DESCRIPTION_2")); } private static Entry[] LogBookController_BuildPickupEntries(orig_BuildPickupEntries orig, Dictionary<ExpansionDef, bool> expansionAvailability) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_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: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00d5: 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_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_00fb: Expected O, but got Unknown Entry[] result = orig.Invoke(expansionAvailability); Entry val = new Entry { nameToken = "PUZZLE_CLUE_ITEM_NAME", extraData = PickupCatalog.FindPickupIndex("ItemTier.Lunar"), color = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)21)) }; Sprite obj = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); val.iconTexture = (Texture)(object)((obj != null) ? obj.texture : null); val.bgTexture = (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texLunarBGIcon.png").WaitForCompletion(); val.modelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLunar/DisplayEliteLunar,Eye.prefab").WaitForCompletion(); object obj2 = <>O.<2>__getClueItemStatus; if (obj2 == null) { GetStatusDelegate val2 = getClueItemStatus; <>O.<2>__getClueItemStatus = val2; obj2 = (object)val2; } val.getStatusImplementation = (GetStatusDelegate)obj2; object obj3 = <>O.<3>__getClueTooltipContent; if (obj3 == null) { GetTooltipContentDelegate val3 = getClueTooltipContent; <>O.<3>__getClueTooltipContent = val3; obj3 = (object)val3; } val.getTooltipContentImplementation = (GetTooltipContentDelegate)obj3; val.pageBuilderMethod = cluePageBuilder; _clueLogbookEntry = val; ArrayUtils.ArrayInsert<Entry>(ref result, 0, ref _clueLogbookEntry); return result; } private static void LogBookPage_SetEntry(orig_SetEntry orig, LogBookPage self, UserProfile userProfile, Entry entry) { orig.Invoke(self, userProfile, entry); LogbookButtonTracker.SetButtonActive(((Component)self).gameObject, entry == _clueLogbookEntry); } } [BepInPlugin("Gorakh.signal_decoder", "signal_decoder", "1.0.4")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PuzzlePlugin : BaseUnityPlugin { public const string PluginGUID = "Gorakh.signal_decoder"; public const string PluginAuthor = "Gorakh"; public const string PluginName = "signal_decoder"; public const string PluginVersion = "1.0.4"; private static PuzzlePlugin _instance; internal static PuzzlePlugin Instance => _instance; internal static ManualLogSource LogSource { get; private set; } internal static AssetBundle AssetBundle { get; private set; } internal static ContentPackProvider ContentPackProvider { get; private set; } private void Awake() { SingletonHelper.Assign<PuzzlePlugin>(ref _instance, this); LogSource = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogMessage((object)"Nothing to see here, quit trying to cheat"); ContentPackProvider = new ContentPackProvider(); HookLogHider.HideHookLogs = true; AssetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "puzzle_assets")); Prefabs.Initialize(); PortalDialerExtender.Apply(); PuzzleClueLogbookItem.Setup(); MissingDLCNotification.Apply(); TabletPlacementHandler.Init(); VanillaArtifactCodeRemover.Initialize(); SurvivorRestrictor.Initialize(); TabletDamageNumberDisabler.Initialize(); TabletPingDisabler.Initialize(); CharacterEvents.Initialize(); MultiplayerDisabler.Initialize(); CharacterDeathHook.Initialize(); PauseScreenSuppressor.Initialize(); LogbookEntryRestrictor.Initailize(); TitlePopupManager.Initialize(); } private void OnDestroy() { try { PortalDialerExtender.Undo(); PuzzleClueLogbookItem.Undo(); MissingDLCNotification.Undo(); TabletPlacementHandler.Cleanup(); VanillaArtifactCodeRemover.Cleanup(); SurvivorRestrictor.Cleanup(); TabletDamageNumberDisabler.Cleanup(); TabletPingDisabler.Cleanup(); CharacterEvents.Cleanup(); MultiplayerDisabler.Cleanup(); CharacterDeathHook.Cleanup(); PauseScreenSuppressor.Cleanup(); LogbookEntryRestrictor.Cleanup(); TitlePopupManager.Cleanup(); } finally { HookLogHider.HideHookLogs = false; } SingletonHelper.Unassign<PuzzlePlugin>(ref _instance, this); } } internal static class SurvivorRestrictor { [CompilerGenerated] private static class <>O { public static hook_SetSurvivorDefs <0>__SurvivorCatalog_SetSurvivorDefs; public static hook_GetSurvivorPreference <1>__UserProfile_GetSurvivorPreference; public static hook_SpawnBody <2>__CharacterMaster_SpawnBody; } private static readonly SurvivorDef _allowedSurvivor = Addressables.LoadAssetAsync<SurvivorDef>((object)"RoR2/Base/Commando/Commando.asset").WaitForCompletion(); public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown object obj = <>O.<0>__SurvivorCatalog_SetSurvivorDefs; if (obj == null) { hook_SetSurvivorDefs val = SurvivorCatalog_SetSurvivorDefs; <>O.<0>__SurvivorCatalog_SetSurvivorDefs = val; obj = (object)val; } SurvivorCatalog.SetSurvivorDefs += (hook_SetSurvivorDefs)obj; object obj2 = <>O.<1>__UserProfile_GetSurvivorPreference; if (obj2 == null) { hook_GetSurvivorPreference val2 = UserProfile_GetSurvivorPreference; <>O.<1>__UserProfile_GetSurvivorPreference = val2; obj2 = (object)val2; } UserProfile.GetSurvivorPreference += (hook_GetSurvivorPreference)obj2; object obj3 = <>O.<2>__CharacterMaster_SpawnBody; if (obj3 == null) { hook_SpawnBody val3 = CharacterMaster_SpawnBody; <>O.<2>__CharacterMaster_SpawnBody = val3; obj3 = (object)val3; } CharacterMaster.SpawnBody += (hook_SpawnBody)obj3; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown object obj = <>O.<0>__SurvivorCatalog_SetSurvivorDefs; if (obj == null) { hook_SetSurvivorDefs val = SurvivorCatalog_SetSurvivorDefs; <>O.<0>__SurvivorCatalog_SetSurvivorDefs = val; obj = (object)val; } SurvivorCatalog.SetSurvivorDefs -= (hook_SetSurvivorDefs)obj; object obj2 = <>O.<1>__UserProfile_GetSurvivorPreference; if (obj2 == null) { hook_GetSurvivorPreference val2 = UserProfile_GetSurvivorPreference; <>O.<1>__UserProfile_GetSurvivorPreference = val2; obj2 = (object)val2; } UserProfile.GetSurvivorPreference -= (hook_GetSurvivorPreference)obj2; object obj3 = <>O.<2>__CharacterMaster_SpawnBody; if (obj3 == null) { hook_SpawnBody val3 = CharacterMaster_SpawnBody; <>O.<2>__CharacterMaster_SpawnBody = val3; obj3 = (object)val3; } CharacterMaster.SpawnBody -= (hook_SpawnBody)obj3; } private static void SurvivorCatalog_SetSurvivorDefs(orig_SetSurvivorDefs orig, SurvivorDef[] newSurvivorDefs) { foreach (SurvivorDef obj in newSurvivorDefs) { obj.hidden = (Object)(object)obj != (Object)(object)_allowedSurvivor; } orig.Invoke(newSurvivorDefs); } private static SurvivorDef UserProfile_GetSurvivorPreference(orig_GetSurvivorPreference orig, UserProfile self) { if ((Object)(object)orig.Invoke(self) != (Object)(object)_allowedSurvivor) { self.SetSurvivorPreference(_allowedSurvivor); } return _allowedSurvivor; } private static CharacterBody CharacterMaster_SpawnBody(orig_SpawnBody orig, CharacterMaster self, Vector3 position, Quaternion rotation) { //IL_003e: 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) if (Object.op_Implicit((Object)(object)self.playerCharacterMasterController)) { ref GameObject bodyPrefab = ref self.bodyPrefab; if (Object.op_Implicit((Object)(object)bodyPrefab) && (Object)(object)SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab) != (Object)(object)_allowedSurvivor) { bodyPrefab = _allowedSurvivor.bodyPrefab; } } return orig.Invoke(self, position, rotation); } } internal static class TabletDamageNumberDisabler { [CompilerGenerated] private static class <>O { public static Manipulator <0>__HealthComponent_HandleDamageDealt_IL; public static hook_HandleDamageDealt <1>__HealthComponent_HandleDamageDealt; public static Manipulator <2>__HealthComponent_HandleHeal_IL; public static hook_HandleHeal <3>__HealthComponent_HandleHeal; public static hook_SpawnDamageNumber <4>__DamageNumberManager_SpawnDamageNumber; } private static BodyIndex _tabletBodyIndex; private static bool _disableDamageNumbers; [SystemInitializer(new Type[] { typeof(BodyCatalog) })] private static void Init() { //IL_0005: 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) _tabletBodyIndex = BodyCatalog.FindBodyIndex(BodyPrefabs.ArtifactTabletBodyPrefab); } public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_0070: 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_007b: Expected O, but got Unknown //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: Expected O, but got Unknown object obj = <>O.<0>__HealthComponent_HandleDamageDealt_IL; if (obj == null) { Manipulator val = HealthComponent_HandleDamageDealt_IL; <>O.<0>__HealthComponent_HandleDamageDealt_IL = val; obj = (object)val; } HealthComponent.HandleDamageDealt += (Manipulator)obj; object obj2 = <>O.<1>__HealthComponent_HandleDamageDealt; if (obj2 == null) { hook_HandleDamageDealt val2 = HealthComponent_HandleDamageDealt; <>O.<1>__HealthComponent_HandleDamageDealt = val2; obj2 = (object)val2; } HealthComponent.HandleDamageDealt += (hook_HandleDamageDealt)obj2; object obj3 = <>O.<2>__HealthComponent_HandleHeal_IL; if (obj3 == null) { Manipulator val3 = HealthComponent_HandleHeal_IL; <>O.<2>__HealthComponent_HandleHeal_IL = val3; obj3 = (object)val3; } HealthComponent.HandleHeal += (Manipulator)obj3; object obj4 = <>O.<3>__HealthComponent_HandleHeal; if (obj4 == null) { hook_HandleHeal val4 = HealthComponent_HandleHeal; <>O.<3>__HealthComponent_HandleHeal = val4; obj4 = (object)val4; } HealthComponent.HandleHeal += (hook_HandleHeal)obj4; object obj5 = <>O.<4>__DamageNumberManager_SpawnDamageNumber; if (obj5 == null) { hook_SpawnDamageNumber val5 = DamageNumberManager_SpawnDamageNumber; <>O.<4>__DamageNumberManager_SpawnDamageNumber = val5; obj5 = (object)val5; } DamageNumberManager.SpawnDamageNumber += (hook_SpawnDamageNumber)obj5; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_0070: 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_007b: Expected O, but got Unknown //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: Expected O, but got Unknown object obj = <>O.<0>__HealthComponent_HandleDamageDealt_IL; if (obj == null) { Manipulator val = HealthComponent_HandleDamageDealt_IL; <>O.<0>__HealthComponent_HandleDamageDealt_IL = val; obj = (object)val; } HealthComponent.HandleDamageDealt -= (Manipulator)obj; object obj2 = <>O.<1>__HealthComponent_HandleDamageDealt; if (obj2 == null) { hook_HandleDamageDealt val2 = HealthComponent_HandleDamageDealt; <>O.<1>__HealthComponent_HandleDamageDealt = val2; obj2 = (object)val2; } HealthComponent.HandleDamageDealt -= (hook_HandleDamageDealt)obj2; object obj3 = <>O.<2>__HealthComponent_HandleHeal_IL; if (obj3 == null) { Manipulator val3 = HealthComponent_HandleHeal_IL; <>O.<2>__HealthComponent_HandleHeal_IL = val3; obj3 = (object)val3; } HealthComponent.HandleHeal -= (Manipulator)obj3; object obj4 = <>O.<3>__HealthComponent_HandleHeal; if (obj4 == null) { hook_HandleHeal val4 = HealthComponent_HandleHeal; <>O.<3>__HealthComponent_HandleHeal = val4; obj4 = (object)val4; } HealthComponent.HandleHeal -= (hook_HandleHeal)obj4; object obj5 = <>O.<4>__DamageNumberManager_SpawnDamageNumber; if (obj5 == null) { hook_SpawnDamageNumber val5 = DamageNumberManager_SpawnDamageNumber; <>O.<4>__DamageNumberManager_SpawnDamageNumber = val5; obj5 = (object)val5; } DamageNumberManager.SpawnDamageNumber -= (hook_SpawnDamageNumber)obj5; } private static void HealthComponent_HandleDamageDealt_IL(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); MethodReference val3 = default(MethodReference); if (!val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref val3) && Extensions.Is((MemberReference)(object)((MemberReference)val3).DeclaringType, (MemberInfo)typeof(NetworkMessage)) && ((MemberReference)val3).Name == "ReadMessage" })) { return; } val.Emit(OpCodes.Dup); val.EmitDelegate<Action<DamageDealtMessage>>((Action<DamageDealtMessage>)delegate(DamageDealtMessage damageDealtMessage) { //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) CharacterBody val2 = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageDealtMessage.victim) && damageDealtMessage.victim.TryGetComponent<CharacterBody>(ref val2) && val2.bodyIndex == _tabletBodyIndex) { _disableDamageNumbers = true; } }); } private static void HealthComponent_HandleHeal_IL(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); MethodReference val3 = default(MethodReference); if (!val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, ref val3) && Extensions.Is((MemberReference)(object)((MemberReference)val3).DeclaringType, (MemberInfo)typeof(NetworkMessage)) && ((MemberReference)val3).Name == "ReadMessage" })) { return; } val.Emit(OpCodes.Dup); val.EmitDelegate<Action<HealMessage>>((Action<HealMessage>)delegate(HealMessage healMessage) { //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) CharacterBody val2 = default(CharacterBody); if (Object.op_Implicit((Object)(object)healMessage.target) && healMessage.target.TryGetComponent<CharacterBody>(ref val2) && val2.bodyIndex == _tabletBodyIndex) { _disableDamageNumbers = true; } }); } private static void HealthComponent_HandleHeal(orig_HandleHeal orig, NetworkMessage netMsg) { try { orig.Invoke(netMsg); } finally { _disableDamageNumbers = false; } } private static void HealthComponent_HandleDamageDealt(orig_HandleDamageDealt orig, NetworkMessage netMsg) { try { orig.Invoke(netMsg); } finally { _disableDamageNumbers = false; } } private static void DamageNumberManager_SpawnDamageNumber(orig_SpawnDamageNumber orig, DamageNumberManager self, float amount, Vector3 position, bool crit, TeamIndex teamIndex, DamageColorIndex damageColorIndex) { //IL_000b: 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_0010: Unknown result type (might be due to invalid IL or missing references) if (!_disableDamageNumbers) { orig.Invoke(self, amount, position, crit, teamIndex, damageColorIndex); } } } public class TabletOutput { public readonly string ChatMessage; public readonly TabletDisplayDescriptor TabletDisplay; public TabletOutput(string chatMessage, TabletDisplayDescriptor tabletDisplay) { ChatMessage = chatMessage; TabletDisplay = tabletDisplay; } public static TabletOutput Read(BinaryReader reader) { string chatMessage = reader.ReadString(); TabletDisplayDescriptor tabletDisplay = TabletDisplayDescriptor.Read(reader); return new TabletOutput(chatMessage, tabletDisplay); } } internal static class TabletPingDisabler { [CompilerGenerated] private static class <>O { public static Manipulator <0>__PingerController_GeneratePingInfo_IL; public static hook_GeneratePingInfo <1>__PingerController_GeneratePingInfo; } private static BodyIndex _tabletBodyIndex; private static RaycastHit? _currentRaycastHit; [SystemInitializer(new Type[] { typeof(BodyCatalog) })] private static void Init() { //IL_0005: 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) _tabletBodyIndex = BodyCatalog.FindBodyIndex(BodyPrefabs.ArtifactTabletBodyPrefab); } public static void Initialize() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown object obj = <>O.<0>__PingerController_GeneratePingInfo_IL; if (obj == null) { Manipulator val = PingerController_GeneratePingInfo_IL; <>O.<0>__PingerController_GeneratePingInfo_IL = val; obj = (object)val; } PingerController.GeneratePingInfo += (Manipulator)obj; object obj2 = <>O.<1>__PingerController_GeneratePingInfo; if (obj2 == null) { hook_GeneratePingInfo val2 = PingerController_GeneratePingInfo; <>O.<1>__PingerController_GeneratePingInfo = val2; obj2 = (object)val2; } PingerController.GeneratePingInfo += (hook_GeneratePingInfo)obj2; } public static void Cleanup() { //IL_0010: 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_001b: Expected O, but got Unknown //IL_0030: 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_003b: Expected O, but got Unknown object obj = <>O.<0>__PingerController_GeneratePingInfo_IL; if (obj == null) { Manipulator val = PingerController_GeneratePingInfo_IL; <>O.<0>__PingerController_GeneratePingInfo_IL = val; obj = (object)val; } PingerController.GeneratePingInfo -= (Manipulator)obj; object obj2 = <>O.<1>__PingerController_GeneratePingInfo; if (obj2 == null) { hook_GeneratePingInfo val2 = PingerController_GeneratePingInfo; <>O.<1>__PingerController_GeneratePingInfo = val2; obj2 = (object)val2; } PingerController.GeneratePingInfo -= (hook_GeneratePingInfo)obj2; } private unsafe static void PingerController_GeneratePingInfo_IL(ILContext il) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall(x, (MethodBase)SymbolExtensions.GetMethodInfo<RaycastHit>((Expression<Action<RaycastHit>>)((RaycastHit _) => Util.CharacterRaycast((GameObject)null, default(Ray), ref *(RaycastHit*)(&_), 0f, default(LayerMask), (QueryTriggerInteraction)0)))) })) { int index = val.Index; int raycastHitLocalIndex = -1; bool num = val.TryGotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdloca(x, ref raycastHitLocalIndex) && Extensions.Is((MemberReference)(object)((VariableReference)il.Method.Body.Variables[raycastHitLocalIndex]).VariableType, (MemberInfo)typeof(RaycastHit)) }); val.Index = index; if (num) { val.Emit(OpCodes.Ldloc, raycastHitLocalIndex); val.EmitDelegate<Action<RaycastHit>>((Action<RaycastHit>)delegate(RaycastHit hit) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) _currentRaycastHit = hit; }); } int index2 = val.Index; val.Index = index2 + 1; } } private static bool PingerController_GeneratePingInfo(orig_GeneratePingInfo orig, Ray aimRay, GameObject bodyObject, out PingInfo result) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_0051: 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_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) _currentRaycastHit = null; bool result2 = orig.Invoke(aimRay, bodyObject, ref result); ref NetworkIdentity targetNetworkIdentity = ref result.targetNetworkIdentity; CharacterBody val = default(CharacterBody); if (Object.op_Implicit((Object)(object)targetNetworkIdentity) && ((Component)targetNetworkIdentity).TryGetComponent<CharacterBody>(ref val) && val.bodyIndex == _tabletBodyIndex) { targetNetworkIdentity = null; if (_currentRaycastHit.HasValue) { RaycastHit value = _currentRaycastHit.Value; result.origin = ((RaycastHit)(ref value)).point; value = _currentRaycastHit.Value; result.normal = ((RaycastHit)(ref value)).normal; } } return result2; } } internal static class TabletPlacementHandler { private static GameObject _finalTabletPrefab; public static void Init() { _finalTabletPrefab = PuzzlePlugin.AssetBundle.LoadAsset<GameObject>("clue_rock_final"); SceneCatalog.onMostRecentSceneDefChanged += SceneCatalog_onMostRecentSceneDefChanged; } public static void Cleanup() { SceneCatalog.onMostRecentSceneDefChanged -= SceneCatalog_onMostRecentSceneDefChanged; } private static void SceneCatalog_onMostRecentSceneDefChanged(SceneDef scene) { //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: 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_0341: Unknown result type (might be due to invalid IL or missing references) //IL_0361: Unknown result type (might be due to invalid IL or missing references) //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_0437: Unknown result type (might be due to invalid IL or missing references) //IL_0457: Unknown result type (might be due to invalid IL or missing references) //IL_045c: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_0505: Unknown result type (might be due to invalid IL or missing references) switch (scene.cachedName) { case "goolake": { GameObject val = Object.Instantiate<GameObject>(BodyPrefabs.ArtifactTabletBodyPrefab); val.transform.position = new Vector3(-60.909f, -176.7904f, -339.2192f); val.transform.rotation = Quaternion.Euler(0f, 93.2511f, 0f); val.transform.localScale = Vector3.one; val.GetComponent<TeamComponent>().teamIndex = (TeamIndex)(-1); EntityStateMachine.FindByCustomName(val, "Body").mainStateType = new SerializableEntityStateType(typeof(TabletGoolakeMainState)); TabletInteraction component = val.GetComponent<TabletInteraction>(); component.Identifier = "goolake"; component.InteractionVerificationKey = new EncryptedBytes(new byte[64] { 117, 1, 159, 233, 176, 23, 183, 59, 197, 111, 172, 249, 217, 159, 58, 204, 123, 147, 27, 181, 234, 144, 127, 32, 152, 102, 95, 104, 201, 144, 3, 50, 21, 56, 236, 160, 222, 206, 60, 51, 73, 143, 196, 28, 7, 152, 150, 224, 182, 191, 31, 88, 234, 17, 158, 82, 176, 233, 0, 252, 234, 12, 21, 28 }, new byte[32] { 87, 20, 174, 52, 35, 191, 144, 230, 191, 88, 210, 46, 242, 188, 31, 166, 88, 189, 220, 231, 177, 106, 221, 251, 220, 220, 194, 12, 54, 48, 97, 134 }); NetworkServer.Spawn(val); break; } case "foggyswamp": { GameObject val5 = Object.Instantiate<GameObject>(BodyPrefabs.ArtifactTabletBodyPrefab); val5.transform.position = new Vector3(-137.1347f, -149.1607f, 116.7283f); val5.transform.rotation = Quaternion.Euler(0f, 193.5471f, 0f); val5.transform.localScale = Vector3.one; EntityStateMachine.FindByCustomName(val5, "Body").mainStateType = new SerializableEntityStateType(typeof(TabletFoggyswampMainState)); TabletInteraction component5 = val5.GetComponent<TabletInteraction>(); component5.Identifier = "foggyswamp"; component5.InteractionVerificationKey = new EncryptedBytes(new byte[64] { 61, 141, 13, 251, 47, 150, 113, 16, 190, 161, 153, 46, 198, 109, 211, 123, 234, 236, 13, 153, 2, 102, 134, 243, 76, 0, 198, 154, 78, 204, 141, 118, 234, 90, 19, 230, 237, 112, 17, 37, 8, 43, 65, 177, 182, 212, 11, 227, 0, 185, 236, 41, 117, 221, 56, 241, 206, 222, 151, 103, 143, 28, 104, 99 }, new byte[32] { 36, 75, 118, 227, 241, 163, 188, 13, 26, 75, 43, 49, 34, 84, 68, 38, 95, 12, 72, 174, 58, 33, 170, 51, 188, 183, 221, 154, 225, 129, 119, 228 }); NetworkServer.Spawn(val5); break; } case "rootjungle": { GameObject val4 = Object.Instantiate<GameObject>(BodyPrefabs.ArtifactTabletBodyPrefab); val4.transform.position = new Vector3(-108.3118f, 24.8799f, -276.3597f); val4.transform.rotation = Quaternion.Euler(0f, 167.8538f, 0f); val4.transform.localScale = Vector3.one; EntityStateMachine.FindByCustomName(val4, "Body").mainStateType = new SerializableEntityStateType(typeof(TabletRootJungleMainState)); TabletInteraction component4 = val4.GetComponent<TabletInteraction>(); component4.Identifier = "rootjungle"; component4.InteractionVerificationKey = new EncryptedBytes(new byte[64] { 163, 149, 6, 129, 141, 132, 184, 253, 229, 0, 121, 97, 100, 173, 145, 197, 188, 38, 23, 215, 127, 217, 44, 81, 63, 41, 55, 25, 184, 185, 121, 97, 242, 76, 75, 96, 243, 64, 159, 103, 221, 210, 182, 49, 156, 206, 217, 83, 94, 175, 65, 12, 47, 239, 234, 121, 175, 245, 250, 111, 217, 62, 44, 208 }, new byte[32] { 225, 150, 199, 221, 225, 10, 34, 76, 35, 120, 161, 35, 72, 228, 10, 202, 246, 169, 38, 105, 207, 4, 212, 169, 80, 64, 156, 96, 61, 57, 235, 32 }); NetworkServer.Spawn(val4); GameObject obj2 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/rootjungle/RJShroomShelf.prefab").WaitForCompletion()); obj2.transform.position = new Vector3(-108.2658f, 21.4934f, -279.6231f); obj2.transform.rotation = Quaternion.Euler(358.6883f, 152.5692f, 0f); obj2.transform.localScale = new Vector3(1.6521f, 1.6521f, 1.6521f); break; } case "wispgraveyard": { GameObject val3 = Object.Instantiate<GameObject>(BodyPrefabs.ArtifactTabletBodyPrefab); val3.transform.position = new Vector3(-249.4934f, 61.2978f, 290.5674f); val3.transform.rotation = Quaternion.Euler(358.3309f, 282.0266f, 0f); val3.transform.localScale = Vector3.one; EntityStateMachine.FindByCustomName(val3, "Body").mainStateType = new SerializableEntityStateType(typeof(TabletWispgraveyardMainState)); TabletInteraction component3 = val3.GetComponent<TabletInteraction>(); component3.Identifier = "wispgraveyard"; component3.InteractionVerificationKey = new EncryptedBytes(new byte[64] { 253, 38, 114, 241, 128, 103, 100, 187, 1, 46, 36, 228, 17, 152, 181, 19, 212, 29, 197, 126, 88, 191, 116, 10, 199, 195, 10, 12, 18, 253, 251, 48, 69, 225, 179, 223, 62, 108, 210, 94, 181, 128, 14, 63, 45, 231, 213, 206, 134, 45, 138, 108, 30, 88, 149, 136, 147, 112, 33, 213, 63, 219, 93, 32 }, new byte[32] { 60, 135, 93, 183, 84, 143, 13, 80, 36, 111, 79, 56, 88, 115, 213, 168, 225, 236, 243, 218, 233, 130, 66, 92, 19, 172, 106, 122, 193, 252, 165, 85 }); NetworkServer.Spawn(val3); break; } case "ancientloft": { GameObject val2 = Object.Instantiate<GameObject>(BodyPrefabs.ArtifactTabletBodyPrefab); val2.transform.position = new Vector3(97.9855f, 155.503f, -60.3773f); val2.transform.rotation = Quaternion.Euler(0f, 11.0473f, 0f); val2.transform.localScale = Vector3.one; EntityStateMachine.FindByCustomName(val2, "Body").mainStateType = new SerializableEntityStateType(typeof(TabletAncientloftBranchState)); TabletInteraction component2 = val2.GetComponent<TabletInteraction>(); component2.Identifier = "ancientloft"; component2.InteractionVerificationKey = new EncryptedBytes(new byte[64] { 122, 167, 18, 31, 135, 74, 60, 12, 247, 19, 148, 140, 124, 155, 194, 23, 42, 177, 225, 91, 102, 128, 176, 37, 94, 242, 131, 134, 152, 251, 133, 162, 220, 84, 72, 10, 133, 87, 218, 127, 60, 207, 123, 179, 15, 38, 143, 252, 147, 200, 173, 219, 89, 85, 4, 135, 127, 185, 90, 213, 225, 78, 182, 139 }, new byte[32] { 226, 104, 226, 165, 141, 212, 146, 86, 188, 18, 177, 90, 86, 132, 122, 214, 84, 77, 237, 99, 210, 28, 101, 127, 164, 99, 25, 241, 151, 193, 108, 38 }); NetworkServer.Spawn(val2); break; } case "moon": if (Run.instance.stageClearCount % 7 == 4) { GameObject obj = Object.Instantiate<GameObject>(_finalTabletPrefab); obj.transform.position = new Vector3(1709.331f, 122.644f, 140.2442f); obj.transform.rotation = Quaternion.Euler(355.3962f, 178.3199f, 359.0472f); obj.transform.localScale = Vector3.one; } break; } } } internal static class TitlePopupManager { private static bool _isShowingPopupsQueue; public static void Initialize() { LocalUserManager.onUserSignIn += LocalUserManager_onUserSignIn; } public static void Cleanup() { LocalUserManager.onUserSignIn -= LocalUserManager_onUserSignIn; } private static void LocalUserManager_onUserSignIn(LocalUser localUser) { if (!_isShowingPopupsQueue) { _isShowingPopupsQueue = true; ((MonoBehaviour)RoR2Application.instance).StartCoroutine(createPopups()); } } private static IEnumerator createPopups() { yield return 0; if (!MissingDLCNotification.TryCreatePopup() && PuzzleClueLogbookItem.TryCreatePopup(out var currentDialogBox)) { while (Object.op_Implicit((Object)(object)currentDialogBox)) { yield return 0; } } _isShowingPopupsQueue = false; } } internal static class VanillaArtifactCodeRemover { public static void Initialize() { SceneCatalog.onMostRecentSceneDefChanged += SceneCatalog_onMostRecentSceneDefChanged; removePrefabArtifactFormula("RoR2/Base/ScavLunar/ScavLunar1Body.prefab", "ModelBase/mdlScav/ScavArmature/ROOT/base/stomach/chest/Decal"); removePrefabArtifactFormula("RoR2/Base/ScavLunar/ScavLunar2Body.prefab", "ModelBase/mdlScav/ScavArmature/ROOT/base/stomach/chest/Decal"); removePrefabArtifactFormula("RoR2/Base/ScavLunar/ScavLunar3Body.prefab", "ModelBase/mdlScav/ScavArmature/ROOT/base/stomach/chest/Decal"); removePrefabArtifactFormula("RoR2/Base/ScavLunar/ScavLunar4Body.prefab", "ModelBase/mdlScav/ScavArmature/ROOT/base/stomach/chest/Decal"); removePrefabArtifactFormula("RoR2/Base/mysteryspace/MysteryspaceDioramaDisplay.prefab", "ArtifactFormulaDisplay"); static void removePrefabArtifactFormula(string assetPath, string displayObjectPath) { //IL_0001: 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) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)assetPath).WaitForCompletion(); if (Object.op_Implicit((Object)(object)val)) { Transform val2 = val.transform.Find(displayObjectPath); if (Object.op_Implicit((Object)(object)val2)) { Object.Destroy((Object)(object)((Component)val2).gameObject); } } } } public static void Cleanup() { SceneCatalog.onMostRecentSceneDefChanged -= SceneCatalog_onMostRecentSceneDefChanged; } private static void SceneCatalog_onMostRecentSceneDefChanged(SceneDef scene) { string cachedName = scene.cachedName; if (cachedName == null) { return; } switch (cachedName.Length) { case 10: switch (cachedName[2]) { case 'a': if (cachedName == "blackbeach") { removeArtifactFormula("HOLDER: Artifact Formula"); } break; case 'o': if (cachedName == "frozenwall") { removeArtifactFormula("HOLDER: Artifact Formula Area/ArtifactFormulaDisplay"); removeArtifactFormula("HOLDER: Artifact Formula Area/SnowPile"); } break; case 'g': if (cachedName == "foggyswamp") { removeArtifactFormula("HOLDER: Hidden Altar Stuff/ArtifactFormulaDisplay"); } break; case 'l': if (cachedName == "goldshores") { removeArtifactFormula("ArtifactFormulaDisplay"); } break; } break; case 12: switch (cachedName[0]) { case 'g': if (cachedName == "golemplains2") { removeArtifactFormula("HOLDER: Distant Props/ArtifactFormulaDisplay"); } break; case 'm': if (cachedName == "mysteryspace") { removeArtifactFormula("ArtifactFormulaDisplay"); } break; } break; case 13: switch (cachedName[0]) { case 'w': if (cachedName == "wispgraveyard") { removeArtifactFormula("ENTIRE SCENE HOLDER/HOLDER: Terrain/WPTerrainBackwall1Detailed/WPPlatform1Stairs (Level 3)/WPObeliskLarge"); } break; case 's': if (cachedName == "shipgraveyard") { removeArtifactFormula("HOLDER: Artifact Formula Area"); } break; case 'a': if (cachedName == "artifactworld") { removeArtifactFormula("ArtifactFormulaDisplay"); } break; } break; case 5: switch (cachedName[0]) { case 'a': if (cachedName == "arena") { removeArtifactFormula("HOLDER: Artifact Formula"); } break; case 't': if (cachedName == "title") { removeArtifactFormula("MainMenu/MENU: Settings/ArtifactFormulaDisplay"); } break; } break; case 7: if (cachedName == "goolake") { removeArtifactFormula("ArtifactFormulaDisplay (Bottom Half)"); removeArtifactFormula("ArtifactFormulaDisplay (Top Half)"); } break; case 14: if (cachedName == "dampcavesimple") { removeArtifactFormula("HOLDER: Formula Area"); } break; case 9: if (cachedName == "skymeadow") { removeArtifactFormula("PortalDialerEvent/Final Zone/Formula"); } break; case 6: if (cachedName == "bazaar") { removeArtifactFormula("HOLDER: Store/ArtifactFormulaDisplay"); } break; case 8: case 11: break; } static void removeArtifactFormula(string objectPath) { ((MonoBehaviour)RoR2Application.instance).StartCoroutine(waitThenRemoveArtifactFormula(objectPath)); } static IEnumerator waitThenRemoveArtifactFormula(string objectPath) { yield return 0; GameObject val = GameObject.Find(objectPath); if (Object.op_Implicit((Object)(object)val)) { Object.Destroy((Object)(object)val); } } } } } namespace SignalDecoder.PortalDialer { public class ComponentFieldValueSetInfo { public string FieldName; public string FieldValueString; public float Delay; public ComponentFieldValueSetInfo(string fieldName, object fieldValue, float delay = 0f) : this(fieldName, Convert.ToString(fieldValue, CultureInfo.InvariantCulture), delay) { } public ComponentFieldValueSetInfo(string fieldName, string fieldValueString, float delay = 0f) { FieldName = fieldName; FieldValueString = fieldValueString; Delay = delay; } public static ComponentFieldValueSetInfo Read(BinaryReader reader) { string fieldName = reader.ReadString(); string fieldValueString = reader.ReadString(); float delay = reader.ReadSingle(); return new ComponentFieldValueSetInfo(fieldName, fieldValueString, delay); } } public class ComponentValuesSetup { private class CoroutineDummy : MonoBehaviour { public Component OwnerComponent; public void SetCoroutine(IEnumerator coroutine) { ((MonoBehaviour)this).StartCoroutine(internalCoroutine()); IEnumerator internalCoroutine() { Component ownerComponent = OwnerComponent; Behaviour ownerAsBehaviour = (Behaviour)(object)((ownerComponent is Behaviour) ? ownerComponent : null); while (Object.op_Implicit((Object)(object)OwnerComponent) && coroutine.MoveNext()) { yield return coroutine.Current; while (Object.op_Implicit((Object)(object)ownerAsBehaviour) && !ownerAsBehaviour.enabled) { yield return 0; } } Object.Destroy((Object)(object)this); } } } public readonly Type ComponentType; public readonly bool SingleComponent; public readonly ComponentFieldValueSetInfo[] FieldValues; public ComponentValuesSetup(Type componentType, bool singleComponent, ComponentFieldValueSetInfo[] fieldValues) { ComponentType = componentType ?? throw new ArgumentNullException("componentType"); SingleComponent = singleComponent; FieldValues = fieldValues ?? Array.Empty<ComponentFieldValueSetInfo>(); } public ComponentValuesSetup(string componentTypeName, bool singleComponent, ComponentFieldValueSetInfo[] fieldValues) : this(Type.GetType(componentTypeName), singleComponent, fieldValues) { } public static ComponentValuesSetup Read(BinaryReader reader) { string componentTypeName = reader.ReadString(); bool singleComponent = reader.ReadBoolean(); ComponentFieldValueSetInfo[] array = new ComponentFieldValueSetInfo[reader.ReadInt32()]; for (int i = 0; i < array.Length; i++) { array[i] = ComponentFieldValueSetInfo.Read(reader); } return new ComponentValuesSetup(componentTypeName, singleComponent, array); } public void SetValues(GameObject obj) { Component val = default(Component); Component[] array = (Component[])((!SingleComponent) ? obj.GetComponents(ComponentType) : ((!obj.TryGetComponent(ComponentType, ref val)) ? ((Array)Array.Empty<Component>()) : ((Array)new Component[1] { val }))); if (array.Length == 0) { return; } ComponentFieldValueSetInfo[] fieldValues = FieldValues; foreach (ComponentFieldValueSetInfo componentFieldValueSetInfo in fieldValues) { string fieldName = componentFieldValueSetInfo.FieldName; string fieldValueString = componentFieldValueSetInfo.FieldValueString; MemberInfo[] member = ComponentType.GetMember(fieldName, MemberTypes.Field | MemberTypes.Property, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); Component[] array2 = array; foreach (Component val2 in array2) { MemberInfo[] array3 = member; foreach (MemberInfo memberInfo in array3) { Action<Component, object> action; Type type; if (!(memberInfo is FieldInfo fieldInfo)) { if (!(memberInfo is PropertyInfo propertyInfo) || !(propertyInfo.SetMethod != null)) { continue; } action = propertyInfo.SetValue; type = propertyInfo.PropertyType; } else { if (fieldInfo.IsLiteral) { continue; } action = fieldInfo.SetValue; type = fieldInfo.FieldType; } object obj2 = ((!type.IsEnum) ? Convert.ChangeType(fieldValueString, type, CultureInfo.InvariantCulture) : Enum.Parse(type, fieldValueString)); if (componentFieldValueSetInfo.Delay <= 0f) { action(val2, obj2); continue; } IEnumerator enumerator = waitThenSetValue(val2, obj2, action, componentFieldValueSetInfo.Delay); MonoBehaviour val3 = (MonoBehaviour)(object)((val2 is MonoBehaviour) ? val2 : null); if (val3 != null) { val3.StartCoroutine(enumerator); continue; } CoroutineDummy coroutineDummy = obj.AddComponent<CoroutineDummy>(); coroutineDummy.OwnerComponent = val2; coroutineDummy.SetCoroutine(enumerator); } } } static IEnumerator waitThenSetValue(Component component, object value, Action<Component, object> setValueFunc, float delay) { yield return (object)new WaitForSeconds(delay); if (Object.op_Implicit((Object)(object)component)) { setValueFunc(component, value); } } } } public class GateStateOverride { public readonly string GateName; public readonly bool Enabled; public readonly float Delay; public GateStateOverride(string gateName, bool enabled, float delay) { GateName = gateName; Enabled = enabled; Delay = delay; } public static GateStateOverride Read(BinaryReader reader) { string gateName = reader.ReadString(); bool enabled = reader.ReadBoolean(); float delay = reader.ReadSingle(); return new GateStateOverride(gateName, enabled, delay); } public IEnumerator SetOverride() { if (Delay > 0f) { yield return (object)new WaitForSeconds(Delay); } SceneInfo.instance.SetGateState(GateName, Enabled); } } internal static class PortalDialerExtender { [CompilerGenerated] private static class <>O { public static hook_PerformActionServer <0>__PortalDialerController_PerformActionServer; public static hook_OnEnter <1>__PortalDialerDialDigitState_OnEnter; public static hook_ApplyActivations <2>__SceneObjectToggleGroup_ApplyActivations; public static Action<SceneDef> <3>__SceneCatalog_onMostRecentSceneDefChanged; } private static readonly EncryptedPortalDialerResult[] _outputs = new EncryptedPortalDialerResult[4] { new EncryptedPortalDialerResult(new byte[1424] { 246, 75, 20, 176, 41, 80, 176, 67, 150, 129, 192, 216, 162, 185, 50, 41, 39, 152, 188, 117, 157, 57, 11, 71, 61, 246, 240, 31, 19, 29, 212, 183, 19, 183, 218, 34, 143, 198, 134, 73, 50, 162, 244, 255, 171, 92, 96, 34, 45, 67, 243, 94, 219, 169, 72, 237, 66, 71, 67, 29, 175, 201, 251, 44, 199, 155, 220, 143, 76, 107, 14, 189, 35, 85, 69, 16, 72, 239, 215, 21, 99, 200, 218, 251, 32, 38, 222, 81, 1, 85, 106, 161, 23, 42, 23, 84, 166, 170, 68, 126, 144, 28, 178, 218, 54, 138, 210, 170, 45, 134, 27, 119, 255, 182, 70, 68, 175, 48, 47, 214, 180, 82, 75, 230, 124, 70, 135, 161, 168, 76, 80, 62, 153, 48, 244, 67, 123, 186, 201, 234, 161, 252, 166, 254, 187, 37, 255, 129, 53, 37, 50, 180, 32, 21, 208, 218, 75, 86, 221, 177, 69, 104, 188, 125, 105, 41, 240, 60, 73, 197, 67, 103, 121, 167, 210, 71, 19, 234, 58, 21, 139, 15, 101, 66, 171, 184, 105, 71, 244, 17, 245, 210, 46, 37, 125, 91, 54, 200, 164, 0, 37, 197, 62, 206, 74, 149, 214, 239, 20, 70, 9, 177, 229, 83, 204, 29, 127, 14, 53, 236, 22, 188, 138, 239, 233, 78, 35, 253, 69, 159, 60, 248, 153, 60, 16, 224, 7, 34, 2, 161, 180, 232, 245, 139, 187, 186, 161, 158, 247, 35, 97, 192, 31, 31, 113, 51, 196, 199, 112, 120, 117, 222, 177, 219, 216, 8, 79, 34, 190, 13, 184, 205, 79, 106, 185, 222, 26, 40, 90, 224, 203, 134, 5, 195, 224, 101, 87, 208, 87, 182, 132, 119, 67, 108, 200, 34, 201, 187, 129, 198, 92, 220, 78, 99, 249, 23, 130, 254, 80, 188, 128, 90, 239, 78, 164, 105, 109, 74, 237, 175, 177, 45, 197, 142, 113, 60, 129, 199, 86, 189, 91, 3, 53, 1, 66, 123, 131, 134, 3, 78, 55, 170, 32, 198, 197, 127, 248, 107, 111, 206, 130, 34, 189, 192, 72, 105, 95, 98, 112, 254, 34, 145, 105, 69, 12, 186, 24, 155, 162, 58, 43, 64, 196, 179, 1, 153, 116, 67, 119, 74, 125, 60, 51, 45, 72, 74, 126, 124, 248, 148, 48, 244, 217, 87, 112, 234, 160, 0, 130, 58, 146, 78, 57, 180, 255, 114, 113, 126, 5, 66, 68, 187, 185, 195, 69, 66, 192, 107, 94, 159, 199, 197, 35, 171, 29, 134, 49, 61, 26, 6, 91, 204, 247, 186, 241, 119, 47, 229, 206, 249, 128, 236, 80, 70, 138, 54, 255, 41, 17, 59, 56, 166, 129, 137, 107, 92, 131, 27, 156, 246, 12, 226, 151, 53, 212, 13, 153, 230, 253, 49, 231, 105, 196, 144, 226, 74, 53, 10, 169, 37, 79, 11, 75, 211, 118, 222, 59, 12, 48, 177, 143, 58, 164, 31, 3, 225, 49, 236, 203, 129, 202, 44, 245, 173, 117, 226, 175, 175, 230, 196, 26, 174, 69, 70, 211, 10, 97, 235, 84, 21, 3, 11, 79, 68, 245, 19, 107, 117, 129, 135, 239, 27, 8, 82, 213, 27, 217, 116, 113, 144, 65, 101, 187, 216, 224, 12, 148, 19, 167, 111, 100, 126, 122, 112, 24, 97, 19, 253, 225, 230, 35, 205, 147, 204, 28, 243, 50, 240, 137, 84, 199, 74, 193, 249, 10, 181, 170, 129, 119, 141, 252, 255, 24, 72, 28, 129, 247, 24, 84, 177, 184, 242, 19, 254, 233, 210, 150, 15, 110, 39, 14, 140, 154, 220, 59, 21, 125, 124, 215, 171, 103, 160, 109, 249, 1, 110, 243, 228, 117, 16, 221, 37, 15, 129, 99, 55, 56, 105, 70, 127, 160, 47, 10, 225, 247, 100, 105, 3, 24, 109, 152, 70, 188, 62, 215, 202, 248, 234, 84, 93, 140, 68, 252, 246, 146, 72, 136, 203, 171, 152, 127, 212, 126, 64, 32, 216, 185, 191, 38, 175, 85, 42, 190, 156, 121, 178, 157, 165, 86, 41, 232, 253, 235, 85, 19, 207, 106, 87, 103, 210, 235, 156, 255, 98, 25, 246, 26, 253, 29, 101, 219, 83, 64, 21, 233, 141, 154, 224, 211, 177, 207, 209, 50, 99, 70, 113, 2, 81, 252, 97, 240, 221, 58, 17, 127, 155, 151, 119, 237, 5, 184, 255, 62, 39, 232, 122, 118, 37, 212, 112, 232, 115, 125, 132, 194, 216, 72, 114, 185, 204, 22, 101, 197, 17, 180, 135, 29, 42, 38, 20, 190, 90, 210, 178, 220, 104, 164, 13, 218, 194, 50, 74, 173, 198, 194, 15, 4, 179, 100, 163, 241, 52, 133, 38, 165, 30, 97, 108, 254, 225, 208, 239, 235, 80, 210, 73, 28, 244, 90, 209, 30, 29, 136, 250, 125, 167, 57, 170, 254, 214, 39, 245, 171, 205, 141, 240, 68, 53, 176, 132, 15, 172, 61, 244, 176, 8, 229, 187, 175, 191, 119, 122, 88, 46, 205, 238, 79, 186, 43, 203, 34, 218, 186, 237, 156, 133, 10, 210, 3, 137, 65, 28, 188, 93, 144, 127, 97, 157, 112, 51, 24, 180, 128, 77, 81, 101, 175, 28, 6, 25, 92, 194, 189, 102, 183, 252, 238, 173, 129, 92, 140, 135, 207, 0, 210, 223, 96, 22, 35, 113, 47, 126, 10, 195, 188, 232, 199, 232, 70, 216, 234, 131, 64, 229, 173, 67, 212, 187, 96, 217, 207, 201, 10, 228, 232, 63, 64, 210, 236, 145, 118, 163, 144, 188, 120, 227, 37, 233, 46, 166, 235, 229, 74, 216, 211, 46, 207, 72, 70, 202, 150, 186, 231, 214, 115, 57, 191, 142, 195, 99, 242, 194, 105, 70, 208, 155, 84, 250, 123, 50, 170, 205, 190, 39, 42, 170, 222, 75, 57, 107, 50, 76, 189, 30, 206, 107, 177, 178, 127, 189, 29, 167, 163, 165, 195, 142, 199, 114, 122, 214, 150, 196, 115, 39, 13, 223, 212, 218, 244, 77, 120, 229, 20, 224, 246, 172, 169, 61, 214, 20, 101, 150, 60, 154, 179, 136, 249, 47, 85, 94, 68, 77, 43, 204, 245, 224, 169, 142, 95, 227, 192, 43, 53, 179, 254, 24, 22, 2, 112, 37, 251, 244, 238, 162, 134, 50, 75, 165, 252, 165, 140, 13, 181, 227, 196, 64, 2, 26, 156, 0, 254, 177, 97, 123, 204, 53, 24, 200, 153, 176, 233, 130, 52, 107, 88, 126, 152, 232, 193, 235, 4, 162, 135, 169, 211, 27, 143, 209, 142, 241, 219, 32, 205, 33, 183, 210, 119, 43, 30, 196, 235, 49, 129, 77, 239, 206, 17, 80, 185, 248, 175, 184, 74, 209, 169, 104, 216, 86, 151, 201, 57, 40, 107, 208, 86, 43, 163, 137, 245, 97, 78, 100, 215, 159, 60, 12, 134, 44, 92, 165, 21, 208, 30, 28, 74, 35, 65, 52, 151, 134, 153, 254, 145, 20, 207, 229, 60, 171, 165, 30, 55, 196, 127, 18, 171, 85, 110, 151, 135, 239, 194, 200, 38, 213, 195, 18, 166, 2, 127, 187, 210, 246, 205, 5, 205, 193, 127, 142, 73, 201, 160, 8, 48, 164, 222, 238, 195, 0, 114, 254, 111, 111, 233, 73, 122, 52, 159, 160, 239, 108, 79, 65, 31, 148, 234, 57, 244, 4, 60, 137, 187, 217, 7, 7, 104, 23, 136, 248, 89, 30, 42, 204, 26, 211, 224, 95, 77, 163, 69, 0, 239, 163, 77, 18, 7, 127, 11, 239, 168, 228, 142, 72, 88, 80, 206, 236, 250, 168, 126, 142, 39, 110, 113, 223, 156, 175, 101, 150, 84, 203, 2, 111, 55, 190, 184, 246, 219, 190, 45, 83, 204, 65, 58, 229, 60, 55, 221, 42, 104, 223, 98, 249, 90, 124, 11, 219, 224, 234, 193, 11, 211, 107, 160, 156, 98, 77, 91, 219, 108, 82, 38, 88, 160, 210, 231, 80, 11, 183, 112, 191, 121, 237, 53, 239, 249, 229, 158, 52, 180, 117, 65, 139, 4, 242, 224, 105, 127, 122, 116, 183, 60, 244, 90, 62, 125, 100, 120, 64, 187, 229, 80, 3, 208, 219, 73, 175, 17, 48, 41, 203, 173, 183, 30, 91, 238, 107, 151, 244, 206, 54, 106, 225, 169, 133, 157, 175, 253, 202, 79, 227, 218, 193, 12, 184, 103, 6, 26, 156, 80, 16, 189, 106, 32, 222, 195, 69, 246, 104, 134, 117, 45, 229, 77, 146, 213, 237, 129, 181, 119, 119, 135, 135, 180, 169, 120, 176, 126, 98, 3, 4, 84, 48, 181, 225 }, new byte[32] { 62, 111, 123, 26, 42, 191, 88, 140, 171, 242, 157, 39, 175, 139, 234, 50, 146, 90, 92, 18, 79, 81, 89, 208, 27, 51, 186, 238, 141, 110, 218, 78 }), new EncryptedPortalDialerResult(new byte[64] { 129, 54, 183, 116, 103, 183, 214, 236, 26, 103, 171, 130, 106, 28, 232, 30, 98, 225, 73, 107, 71, 73, 215, 2, 156, 5, 19, 104, 31, 188, 134, 16, 128, 163, 231, 178, 227, 163, 87, 196, 238, 26, 171, 159, 200, 167, 15, 240, 105, 176, 84, 204, 190, 194, 56, 58, 201, 87, 33, 72, 54, 66, 231, 127 }, new byte[32] { 74, 155, 6, 139, 14, 12, 137, 126, 174, 215, 143, 28, 232, 51, 247, 228, 242, 68, 215, 96, 3, 231, 168, 6, 75, 217, 125, 11, 22, 250, 110, 126 }), new EncryptedPortalDialerResult(new byte[64] { 195, 167, 14, 1, 50, 156, 183, 186, 216, 53, 154, 111, 237, 95, 93, 104, 12, 168, 231, 138, 227, 13, 244, 142, 235, 95, 196, 105, 22, 0, 110, 50, 1, 235, 122, 86, 175, 102, 219, 184, 99, 145, 1, 106, 86, 22, 94, 200, 182, 153, 128, 238, 254, 247, 59, 138, 152, 212, 188, 119, 226, 217, 19, 217 }, new byte[32] { 144, 25, 112, 193, 92, 251, 210, 8, 91, 69, 111, 206, 97, 172, 168, 191, 238, 21, 165, 160, 165, 86, 125, 145, 188, 23, 142, 166, 160, 214, 177, 248 }), new EncryptedPortalDialerResult(new byte[64] { 153, 124, 171, 6, 235, 6, 61, 176, 19, 206, 97, 25, 79, 44, 231, 52, 110, 47, 4, 82, 66, 145, 32, 97, 68, 40, 51, 12, 40, 184, 0, 236, 18, 146, 107, 126, 3, 119, 99, 132, 49, 17, 42, 93, 254, 169, 230, 23, 78, 157, 130, 52, 54, 254, 72, 129, 239, 213, 215, 113, 242, 122, 198, 172 }, new byte[32] { 68, 109, 216, 138, 85, 165, 35, 189, 163, 74, 193, 177, 68, 245, 179, 209, 167, 188, 173, 115, 80, 111, 31, 79, 144, 33, 101, 243, 115, 221, 83, 208 }) }; private static PortalDialerResult _lastEnteredResult; private const string CODE_SEQUENCE_CORRECT_MESSAGE_TOKEN = "CODE_SEQUENCE_CORRECT_MESSAGE_FORMAT"; private const string CODE_SEQUENCE_INCORRECT_MESSAGE_TOKEN = "CODE_SEQUENCE_INCORRECT_MESSAGE_FORMAT"; internal static void