Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of RPGMod v3.7.0
RPGMod.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.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using On.RoR2; using RPGMod.Extensions; using RPGMod.Questing; using RPGMod.SoftDependencies; using RPGMod.UI; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.ConVar; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")] [assembly: AssemblyCompany("com.ghasttear1.rpgmod")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A Risk of Rain 2 mod.")] [assembly: AssemblyFileVersion("3.7.0.0")] [assembly: AssemblyInformationalVersion("3.7.0+8c5e9911f96a8137ea4fe0ccf6c1979ef7067b6b")] [assembly: AssemblyProduct("RPGMod")] [assembly: AssemblyTitle("RPGMod")] [assembly: AssemblyVersion("3.7.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RPGMod { internal static class ConfigurationManager { [StructLayout(LayoutKind.Sequential, Size = 1)] public struct Questing { public static ConfigEntry<int> Cooldown; public static ConfigEntry<float> RewardChanceCommon; public static ConfigEntry<float> RewardChanceUncommon; public static ConfigEntry<float> RewardChanceRare; public static ConfigEntry<float> RewardChanceAdjustmentPercent; public static ConfigEntry<int> TimerBase; public static ConfigEntry<int> TimerExtra; public static ConfigEntry<string> RewardBlacklist; public static ConfigEntry<string> EnemyTypeBlacklist; public static ConfigEntry<string> EliteBuffBlacklist; public static ConfigEntry<bool> MissionKillAnyEnabled; public static ConfigEntry<int> MissionKillAnyMin; public static ConfigEntry<int> MissionKillAnyMax; public static ConfigEntry<bool> MissionKillCommonEnabled; public static ConfigEntry<int> MissionKillCommonMin; public static ConfigEntry<int> MissionKillCommonMax; public static ConfigEntry<bool> MissionKillEliteEnabled; public static ConfigEntry<int> MissionKillEliteMin; public static ConfigEntry<int> MissionKillEliteMax; public static ConfigEntry<bool> MissionKillChampionEnabled; public static ConfigEntry<int> MissionKillChampionMin; public static ConfigEntry<int> MissionKillChampionMax; public static ConfigEntry<bool> MissionKillFlyingEnabled; public static ConfigEntry<int> MissionKillFlyingMin; public static ConfigEntry<int> MissionKillFlyingMax; public static ConfigEntry<bool> MissionKillSpecificTypeEnabled; public static ConfigEntry<int> MissionKillSpecificTypeMin; public static ConfigEntry<int> MissionKillSpecificTypeMax; public static ConfigEntry<bool> MissionKillSpecificBuffEnabled; public static ConfigEntry<int> MissionKillSpecificBuffMin; public static ConfigEntry<int> MissionKillSpecificBuffMax; public static ConfigEntry<bool> MissionCollectGoldEnabled; public static ConfigEntry<int> MissionCollectGoldMin; public static ConfigEntry<int> MissionCollectGoldMax; public static ConfigEntry<int> NumMissionsCommonMin; public static ConfigEntry<int> NumMissionsCommonMax; public static ConfigEntry<int> NumMissionsUncommonMin; public static ConfigEntry<int> NumMissionsUncommonMax; public static ConfigEntry<int> NumMissionsRareMin; public static ConfigEntry<int> NumMissionsRareMax; } [StructLayout(LayoutKind.Sequential, Size = 1)] public struct Networking { public static ConfigEntry<short> MsgType; public static ConfigEntry<short> UpdateRate; } [StructLayout(LayoutKind.Sequential, Size = 1)] public struct UI { public static ConfigEntry<bool> UseHUDScale; public static ConfigEntry<float> HUDScaleOverride; public static ConfigEntry<float> QuestPositionX; public static ConfigEntry<float> QuestPositionY; public static ConfigEntry<float> AnnouncerScaleX; public static ConfigEntry<float> AnnouncerPositionY; public static ConfigEntry<bool> SendNewQuestAnnouncement; public static ConfigEntry<bool> SendQuestCompleteAnnouncement; public static ConfigEntry<bool> SendQuestFailedAnnouncement; } public static void Init(ConfigFile configFile) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_006c: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00af: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown //IL_00f2: Expected O, but got Unknown //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0135: Expected O, but got Unknown //IL_014b: 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_0178: Expected O, but got Unknown //IL_0178: Expected O, but got Unknown //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Expected O, but got Unknown //IL_01ad: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Expected O, but got Unknown //IL_0215: Expected O, but got Unknown //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Expected O, but got Unknown //IL_024e: Expected O, but got Unknown //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_027f: Expected O, but got Unknown //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Expected O, but got Unknown //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Expected O, but got Unknown //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Expected O, but got Unknown //IL_02f6: Expected O, but got Unknown //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Expected O, but got Unknown //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Expected O, but got Unknown //IL_034d: Expected O, but got Unknown //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Expected O, but got Unknown //IL_03ae: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Expected O, but got Unknown //IL_03c9: Expected O, but got Unknown //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Expected O, but got Unknown //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Expected O, but got Unknown //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Expected O, but got Unknown //IL_043f: Expected O, but got Unknown //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Expected O, but got Unknown //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Expected O, but got Unknown //IL_0499: Unknown result type (might be due to invalid IL or missing references) //IL_04aa: Unknown result type (might be due to invalid IL or missing references) //IL_04b4: Expected O, but got Unknown //IL_04b4: Expected O, but got Unknown //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Expected O, but got Unknown //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Expected O, but got Unknown //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Unknown result type (might be due to invalid IL or missing references) //IL_0529: Expected O, but got Unknown //IL_0529: Expected O, but got Unknown //IL_053f: Unknown result type (might be due to invalid IL or missing references) //IL_054b: Expected O, but got Unknown //IL_0561: Unknown result type (might be due to invalid IL or missing references) //IL_056d: Expected O, but got Unknown //IL_0583: Unknown result type (might be due to invalid IL or missing references) //IL_0594: Unknown result type (might be due to invalid IL or missing references) //IL_059e: Expected O, but got Unknown //IL_059e: Expected O, but got Unknown //IL_05b4: Unknown result type (might be due to invalid IL or missing references) //IL_05c0: Expected O, but got Unknown //IL_05d6: Unknown result type (might be due to invalid IL or missing references) //IL_05e2: Expected O, but got Unknown //IL_05f8: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_0617: Expected O, but got Unknown //IL_0617: Expected O, but got Unknown //IL_0656: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_0671: Expected O, but got Unknown //IL_0671: Expected O, but got Unknown //IL_0687: Unknown result type (might be due to invalid IL or missing references) //IL_06a0: Unknown result type (might be due to invalid IL or missing references) //IL_06aa: Expected O, but got Unknown //IL_06aa: Expected O, but got Unknown //IL_06c0: Unknown result type (might be due to invalid IL or missing references) //IL_06d9: Unknown result type (might be due to invalid IL or missing references) //IL_06e3: Expected O, but got Unknown //IL_06e3: Expected O, but got Unknown //IL_06f9: Unknown result type (might be due to invalid IL or missing references) //IL_0711: Unknown result type (might be due to invalid IL or missing references) //IL_071b: Expected O, but got Unknown //IL_071b: Expected O, but got Unknown //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0749: Unknown result type (might be due to invalid IL or missing references) //IL_0753: Expected O, but got Unknown //IL_0753: Expected O, but got Unknown //IL_0769: Unknown result type (might be due to invalid IL or missing references) //IL_0781: Unknown result type (might be due to invalid IL or missing references) //IL_078b: Expected O, but got Unknown //IL_078b: Expected O, but got Unknown //IL_07a1: Unknown result type (might be due to invalid IL or missing references) //IL_07b9: Unknown result type (might be due to invalid IL or missing references) //IL_07c3: Expected O, but got Unknown //IL_07c3: Expected O, but got Unknown //IL_07d9: Unknown result type (might be due to invalid IL or missing references) //IL_07f1: Unknown result type (might be due to invalid IL or missing references) //IL_07fb: Expected O, but got Unknown //IL_07fb: Expected O, but got Unknown //IL_0811: Unknown result type (might be due to invalid IL or missing references) //IL_0829: Unknown result type (might be due to invalid IL or missing references) //IL_0833: Expected O, but got Unknown //IL_0833: Expected O, but got Unknown //IL_0849: Unknown result type (might be due to invalid IL or missing references) //IL_085e: Unknown result type (might be due to invalid IL or missing references) //IL_0868: Expected O, but got Unknown //IL_0868: Expected O, but got Unknown //IL_0878: Unknown result type (might be due to invalid IL or missing references) //IL_088a: Unknown result type (might be due to invalid IL or missing references) //IL_0894: Expected O, but got Unknown //IL_0894: Expected O, but got Unknown //IL_08a4: Unknown result type (might be due to invalid IL or missing references) //IL_08b5: Unknown result type (might be due to invalid IL or missing references) //IL_08bf: Expected O, but got Unknown //IL_08bf: Expected O, but got Unknown //IL_08fa: Unknown result type (might be due to invalid IL or missing references) //IL_091d: Unknown result type (might be due to invalid IL or missing references) //IL_0927: Expected O, but got Unknown //IL_0927: Expected O, but got Unknown //IL_0962: Unknown result type (might be due to invalid IL or missing references) //IL_0985: Unknown result type (might be due to invalid IL or missing references) //IL_098f: Expected O, but got Unknown //IL_098f: Expected O, but got Unknown //IL_09ca: Unknown result type (might be due to invalid IL or missing references) //IL_09ed: Unknown result type (might be due to invalid IL or missing references) //IL_09f7: Expected O, but got Unknown //IL_09f7: Expected O, but got Unknown //IL_0a32: Unknown result type (might be due to invalid IL or missing references) //IL_0a55: Unknown result type (might be due to invalid IL or missing references) //IL_0a5f: Expected O, but got Unknown //IL_0a5f: Expected O, but got Unknown //IL_0a9a: Unknown result type (might be due to invalid IL or missing references) //IL_0abd: Unknown result type (might be due to invalid IL or missing references) //IL_0ac7: Expected O, but got Unknown //IL_0ac7: Expected O, but got Unknown //IL_0b02: Unknown result type (might be due to invalid IL or missing references) //IL_0b13: Unknown result type (might be due to invalid IL or missing references) //IL_0b1d: Expected O, but got Unknown //IL_0b1d: Expected O, but got Unknown //IL_0b33: Unknown result type (might be due to invalid IL or missing references) //IL_0b44: Unknown result type (might be due to invalid IL or missing references) //IL_0b4e: Expected O, but got Unknown //IL_0b4e: Expected O, but got Unknown //IL_0b64: Unknown result type (might be due to invalid IL or missing references) //IL_0b75: Unknown result type (might be due to invalid IL or missing references) //IL_0b7f: Expected O, but got Unknown //IL_0b7f: Expected O, but got Unknown ConfigDescription val = new ConfigDescription("The minimum amount for the range of the kill goal", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>()); ConfigDescription val2 = new ConfigDescription("The maximum amount for the range of the kill goal", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>()); RiskOfOptionsHelper.RegisterModInfo("Options for RPG Mod"); Questing.Cooldown = configFile.Bind<int>(new ConfigDefinition("Questing", "Cooldown"), 45, new ConfigDescription("Cooldown period between each quest in seconds", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 600), Array.Empty<object>())).AddOptionSlider(); Questing.RewardChanceCommon = configFile.Bind<float>(new ConfigDefinition("Questing", "RewardChanceCommon"), 76f, new ConfigDescription("Percentage chance to roll for a common reward", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); Questing.RewardChanceUncommon = configFile.Bind<float>(new ConfigDefinition("Questing", "RewardChanceUncommon"), 16f, new ConfigDescription("Percentage chance to roll for an uncommon reward", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); Questing.RewardChanceRare = configFile.Bind<float>(new ConfigDefinition("Questing", "RewardChanceRare"), 8f, new ConfigDescription("Percentage chance to roll for a rare reward", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); Questing.RewardChanceAdjustmentPercent = configFile.Bind<float>(new ConfigDefinition("Questing", "RewardChanceAdjustmentPercentage"), 2f, new ConfigDescription("Percentage multiplier to increase the chance of uncommon and rare rewards per successful quest", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); Questing.RewardBlacklist = configFile.Bind<string>(new ConfigDefinition("Questing", "RewardBlacklist"), string.Empty, new ConfigDescription("Items ID to blacklist as quest reward. Separated with a comma.", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionString(); Questing.RewardBlacklist.SettingChanged += delegate { Blacklist.ClearCache(); }; Questing.TimerBase = configFile.Bind<int>(new ConfigDefinition("Questing", "TimerBase"), 180, new ConfigDescription("Number of seconds to complete a quest", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 600), Array.Empty<object>())).AddOptionSlider(); Questing.TimerExtra = configFile.Bind<int>(new ConfigDefinition("Questing", "TimerExtra"), 30, new ConfigDescription("Extra seconds to complete the quest per extra mission", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 120), Array.Empty<object>())).AddOptionSlider(); Questing.MissionKillAnyEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillAnyEnabled"), true, new ConfigDescription("Enable Kill any enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillAnyMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillAnyMin"), 10, val).AddOptionSlider(); Questing.MissionKillAnyMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillAnyMax"), 15, val2).AddOptionSlider(); Questing.MissionKillSpecificTypeEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillSpecificTypeEnabled"), true, new ConfigDescription("Enable Kill specific enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillSpecificTypeMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillSpecificTypeMin"), 2, val).AddOptionSlider(); Questing.EnemyTypeBlacklist = configFile.Bind<string>(new ConfigDefinition("Questing", "EnemyTypeBlacklist"), string.Empty, new ConfigDescription("Enemy types (CharacterBody.baseNameToken) to blacklist as quest specification. Separated with a comma.", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionString(); Questing.EnemyTypeBlacklist.SettingChanged += delegate { string[] enemyTypeBlacklist = ConfigValues.Questing.EnemyTypeBlacklist; foreach (string item2 in enemyTypeBlacklist) { Server.AllowedMonsterTypes.Remove(item2); } if (Server.AllowedMonsterTypes.Count == 0) { Server.AllowedMissionTypes.Remove(MissionType.KillSpecificName); } }; Questing.MissionKillSpecificTypeMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillSpecificTypeMax"), 5, val2).AddOptionSlider(); Questing.MissionKillCommonEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillCommonEnabled"), true, new ConfigDescription("Enable Kill common enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillCommonMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillCommonMin"), 5, val).AddOptionSlider(); Questing.MissionKillCommonMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillCommonMax"), 9, val2).AddOptionSlider(); Questing.MissionKillEliteEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillEliteEnabled"), true, new ConfigDescription("Enable Kill elite enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillEliteMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillEliteMin"), 3, val).AddOptionSlider(); Questing.MissionKillEliteMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillEliteMax"), 7, val2).AddOptionSlider(); Questing.MissionKillChampionEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "KillChampionMissionEnabled"), true, new ConfigDescription("Enable Kill champion enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillChampionMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillChampionMin"), 1, val).AddOptionSlider(); Questing.MissionKillChampionMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillChampionMax"), 2, val2).AddOptionSlider(); Questing.MissionKillFlyingEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillFlyingEnabled"), true, new ConfigDescription("Enable Kill flying enemies mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillFlyingMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillFlyingMin"), 2, val).AddOptionSlider(); Questing.MissionKillFlyingMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillFlyingMax"), 5, val2).AddOptionSlider(); Questing.MissionKillSpecificBuffEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionKillSpecificBuffEnabled"), true, new ConfigDescription("Enable Kill enemies with specific buff mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionKillSpecificBuffMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillSpecificBuffMin"), 1, val).AddOptionSlider(); Questing.MissionKillSpecificBuffMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionKillSpecificBuffMax"), 2, val2).AddOptionSlider(); Questing.EliteBuffBlacklist = configFile.Bind<string>(new ConfigDefinition("Questing", "EliteBuffBlacklist"), string.Empty, new ConfigDescription("Elite buff name (BuffDef.name) to blacklist as mission specification. Separated with a comma.", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionString(); Questing.EnemyTypeBlacklist.SettingChanged += delegate { string[] eliteBuffBlacklist = ConfigValues.Questing.EliteBuffBlacklist; foreach (string item in eliteBuffBlacklist) { Server.AllowedBuffTypes.Remove(item); } if (Server.AllowedBuffTypes.Count == 0) { Server.AllowedMissionTypes.Remove(MissionType.KillSpecificBuff); } }; Questing.MissionCollectGoldEnabled = configFile.Bind<bool>(new ConfigDefinition("Questing", "MissionCollectGoldEnabled"), true, new ConfigDescription("Enable Collect gold mission", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); Questing.MissionCollectGoldMin = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionCollectGoldMin"), 12, new ConfigDescription("The minimum amount for the collect gold mission", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())).AddOptionSlider(); Questing.MissionCollectGoldMax = configFile.Bind<int>(new ConfigDefinition("Questing", "MissionCollectGoldMax"), 31, new ConfigDescription("The maximum amount for the collect gold mission", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsCommonMin = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsCommonMin"), 1, new ConfigDescription("The minimum amount of missions to generate for Tier 1 items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsCommonMax = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsCommonMax"), 1, new ConfigDescription("The maximum amount of missions to generate for common items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsUncommonMin = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsUncommonMin"), 2, new ConfigDescription("The minimum amount of missions to generate for uncommon items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsUncommonMax = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsUncommonMax"), 2, new ConfigDescription("The maximum amount of missions to generate for uncommon items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsRareMin = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsRareMin"), 3, new ConfigDescription("The minimum amount of missions to generate for rare items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Questing.NumMissionsRareMax = configFile.Bind<int>(new ConfigDefinition("Questing", "NumMissionsRareMax"), 4, new ConfigDescription("The maximum amount of missions to generate for rare items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 10), Array.Empty<object>())).AddOptionSlider(); Networking.MsgType = configFile.Bind<short>(new ConfigDefinition("Networking", "MessageType"), (short)1337, new ConfigDescription("The starting number used for identification of messages sent between the client and server (both clients and server must be the same)", (AcceptableValueBase)null, Array.Empty<object>())); Networking.UpdateRate = configFile.Bind<short>(new ConfigDefinition("Networking", "UpdateRate"), (short)100, new ConfigDescription("How frequently clients are synced to the server (in ms)", (AcceptableValueBase)null, Array.Empty<object>())); UI.UseHUDScale = configFile.Bind<bool>(new ConfigDefinition("UI", "UseHUDScale"), true, new ConfigDescription("Determines whether or not the in-game HUD Scale setting is used", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); UI.UseHUDScale.SettingChanged += RefreshUI; UI.HUDScaleOverride = configFile.Bind<float>(new ConfigDefinition("UI", "HUDScaleOverride"), 1f, new ConfigDescription("If useHUDScale is false, this value is used to determine scale instead", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 10f), Array.Empty<object>())).AddOptionSlider(); UI.HUDScaleOverride.SettingChanged += RefreshUI; UI.QuestPositionX = configFile.Bind<float>(new ConfigDefinition("UI", "QuestPositionX"), 87f, new ConfigDescription("Location of the quest on the screen (x axis), represented by screen width percentage", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); UI.QuestPositionX.SettingChanged += RefreshUI; UI.QuestPositionY = configFile.Bind<float>(new ConfigDefinition("UI", "QuestPositionY"), 70f, new ConfigDescription("Location of the quest on the screen (y axis), represented by screen height percentage", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); UI.QuestPositionY.SettingChanged += RefreshUI; UI.AnnouncerScaleX = configFile.Bind<float>(new ConfigDefinition("UI", "AnnouncerScaleX"), 30f, new ConfigDescription("Percentage of screen width (x axis) used for the announcer box", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); UI.AnnouncerScaleX.SettingChanged += RefreshUI; UI.AnnouncerPositionY = configFile.Bind<float>(new ConfigDefinition("UI", "AnnouncerPositionY"), 3f, new ConfigDescription("Location of the announcer on the screen (y axis), represented by screen height percentage", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())).AddOptionSlider(); UI.AnnouncerPositionY.SettingChanged += RefreshUI; UI.SendNewQuestAnnouncement = configFile.Bind<bool>(new ConfigDefinition("UI", "SendNewQuestAnnouncement"), true, new ConfigDescription("Send new quest announcement", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); UI.SendQuestCompleteAnnouncement = configFile.Bind<bool>(new ConfigDefinition("UI", "SendQuestCompleteAnnouncement"), true, new ConfigDescription("Send quest complete announcement", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); UI.SendQuestFailedAnnouncement = configFile.Bind<bool>(new ConfigDefinition("UI", "SendQuestFailedAnnouncement"), true, new ConfigDescription("Send quest failed announcement", (AcceptableValueBase)null, Array.Empty<object>())).AddOptionBool(); } private static void RefreshUI(object sender, EventArgs e) { if (!((Object)(object)RpgMod.Instance == (Object)null) && RpgMod.Instance.ModState == ModState.Started) { RpgMod.Instance.RefreshUI(); } } } public static class ConfigValues { [StructLayout(LayoutKind.Sequential, Size = 1)] public struct Questing { public static int Cooldown => ConfigurationManager.Questing.Cooldown.Value; public static float RewardChanceCommon => ConfigurationManager.Questing.RewardChanceCommon.Value / 100f; public static float RewardChanceUncommon => ConfigurationManager.Questing.RewardChanceUncommon.Value / 100f; public static float RewardChanceRare => ConfigurationManager.Questing.RewardChanceRare.Value / 100f; public static float RewardChanceAdjustmentPercent => ConfigurationManager.Questing.RewardChanceAdjustmentPercent.Value / 100f; public static float TimerBase => ConfigurationManager.Questing.TimerBase.Value; public static float TimerExtra => ConfigurationManager.Questing.TimerExtra.Value; public static string[] RewardBlacklist => ConfigurationManager.Questing.RewardBlacklist.Value.Split(new char[1] { ',' }); public static bool MissionKillAnyEnabled => ConfigurationManager.Questing.MissionKillAnyEnabled.Value; public static int MissionKillAnyMin => ConfigurationManager.Questing.MissionKillAnyMin.Value; public static int MissionKillAnyMax => ConfigurationManager.Questing.MissionKillAnyMax.Value; public static bool KillSpecificTypeEnabled => ConfigurationManager.Questing.MissionKillSpecificTypeEnabled.Value; public static int KillSpecificNameMin => ConfigurationManager.Questing.MissionKillSpecificTypeMin.Value; public static int KillSpecificNameMax => ConfigurationManager.Questing.MissionKillSpecificTypeMax.Value; public static string[] EnemyTypeBlacklist => ConfigurationManager.Questing.EnemyTypeBlacklist.Value.Split(new char[1] { ',' }); public static bool MissionKillCommonEnabled => ConfigurationManager.Questing.MissionKillCommonEnabled.Value; public static int MissionKillCommonMin => ConfigurationManager.Questing.MissionKillCommonMin.Value; public static int MissionKillCommonMax => ConfigurationManager.Questing.MissionKillCommonMax.Value; public static bool MissionKillEliteEnabled => ConfigurationManager.Questing.MissionKillEliteEnabled.Value; public static int MissionKillEliteMin => ConfigurationManager.Questing.MissionKillEliteMin.Value; public static int MissionKillEliteMax => ConfigurationManager.Questing.MissionKillEliteMax.Value; public static bool MissionKillChampionEnabled => ConfigurationManager.Questing.MissionKillChampionEnabled.Value; public static int MissionKillChampionMin => ConfigurationManager.Questing.MissionKillChampionMin.Value; public static int MissionKillChampionMax => ConfigurationManager.Questing.MissionKillChampionMax.Value; public static bool MissionKillFlyingEnabled => ConfigurationManager.Questing.MissionKillFlyingEnabled.Value; public static int MissionKillFlyingMin => ConfigurationManager.Questing.MissionKillFlyingMin.Value; public static int MissionKillFlyingMax => ConfigurationManager.Questing.MissionKillFlyingMax.Value; public static bool MissionKillSpecificBuffEnabled => ConfigurationManager.Questing.MissionKillSpecificBuffEnabled.Value; public static int MissionKillSpecificBuffMin => ConfigurationManager.Questing.MissionKillSpecificBuffMin.Value; public static int MissionKillSpecificBuffMax => ConfigurationManager.Questing.MissionKillSpecificBuffMax.Value; public static string[] EliteBuffBlacklist => ConfigurationManager.Questing.EliteBuffBlacklist.Value.Split(new char[1] { ',' }); public static bool MissionCollectGoldEnabled => ConfigurationManager.Questing.MissionCollectGoldEnabled.Value; public static int MissionCollectGoldMin => ConfigurationManager.Questing.MissionCollectGoldMin.Value; public static int MissionCollectGoldMax => ConfigurationManager.Questing.MissionCollectGoldMax.Value; public static int NumMissionsCommonMin => ConfigurationManager.Questing.NumMissionsCommonMin.Value; public static int NumMissionsCommonMax => ConfigurationManager.Questing.NumMissionsCommonMax.Value; public static int NumMissionsUncommonMin => ConfigurationManager.Questing.NumMissionsUncommonMin.Value; public static int NumMissionsUncommonMax => ConfigurationManager.Questing.NumMissionsUncommonMax.Value; public static int NumMissionsRareMin => ConfigurationManager.Questing.NumMissionsRareMin.Value; public static int NumMissionsRareMax => ConfigurationManager.Questing.NumMissionsRareMax.Value; } [StructLayout(LayoutKind.Sequential, Size = 1)] public struct Networking { public static short MsgType => ConfigurationManager.Networking.MsgType.Value; public static short UpdateRate => ConfigurationManager.Networking.UpdateRate.Value; } [StructLayout(LayoutKind.Sequential, Size = 1)] public struct UI { public static bool UseHUDScale => ConfigurationManager.UI.UseHUDScale.Value; public static float HUDScaleOverride => ConfigurationManager.UI.HUDScaleOverride.Value / 100f; public static float QuestPositionX => ConfigurationManager.UI.QuestPositionX.Value / 100f; public static float QuestPositionY => ConfigurationManager.UI.QuestPositionY.Value / 100f; public static float AnnouncerScaleX => ConfigurationManager.UI.AnnouncerScaleX.Value / 100f; public static float AnnouncerPositionY => ConfigurationManager.UI.AnnouncerPositionY.Value / 100f; public static bool SendNewQuestAnnouncement => ConfigurationManager.UI.SendNewQuestAnnouncement.Value; public static bool SendQuestCompleteAnnouncement => ConfigurationManager.UI.SendQuestCompleteAnnouncement.Value; public static bool SendQuestFailedAnnouncement => ConfigurationManager.UI.SendQuestFailedAnnouncement.Value; } } public static class Networking { [CompilerGenerated] private static class <>O { public static NetworkMessageDelegate <0>__Handler; public static NetworkMessageDelegate <1>__Handler; public static NetworkMessageDelegate <2>__Handler; } private static float _lastUpdate; private static void RegisterHandlers() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //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) //IL_007c: Expected O, but got Unknown NetworkClient client = NetworkManager.singleton.client; short msgType = ConfigValues.Networking.MsgType; object obj = <>O.<0>__Handler; if (obj == null) { NetworkMessageDelegate val = QuestData.Handler; <>O.<0>__Handler = val; obj = (object)val; } client.RegisterHandler(msgType, (NetworkMessageDelegate)obj); short num = (short)(ConfigValues.Networking.MsgType + 1); object obj2 = <>O.<1>__Handler; if (obj2 == null) { NetworkMessageDelegate val2 = Announcement.Handler; <>O.<1>__Handler = val2; obj2 = (object)val2; } client.RegisterHandler(num, (NetworkMessageDelegate)obj2); short num2 = (short)(ConfigValues.Networking.MsgType + 2); object obj3 = <>O.<2>__Handler; if (obj3 == null) { NetworkMessageDelegate val3 = ItemReceived.Handler; <>O.<2>__Handler = val3; obj3 = (object)val3; } client.RegisterHandler(num2, (NetworkMessageDelegate)obj3); } public static void Setup() { _lastUpdate = 0f; RegisterHandlers(); } public static void Sync() { if (ConfigValues.Networking.UpdateRate != 0 && !(Run.instance.GetRunStopwatch() - _lastUpdate >= (float)ConfigValues.Networking.UpdateRate / 1000f)) { return; } foreach (ClientData clientData in Server.ClientDatas) { NetworkServer.SendToClient(((NetworkBehaviour)clientData.NetworkUser).connectionToClient.connectionId, ConfigValues.Networking.MsgType, (MessageBase)(object)clientData.QuestData); } _lastUpdate = Run.instance.GetRunStopwatch(); } public static void Write(this NetworkWriter writer, MissionType missionType) { writer.Write((int)missionType); } public static void Write(this NetworkWriter writer, Mission mission) { writer.Write(mission.MissionType); writer.Write(mission.MissionSpecification); writer.Write(mission.IsCompleted); writer.Write(mission.Progress); writer.Write(mission.Objective); } public static void SendAnnouncement(Announcement message, int connectionId) { NetworkServer.SendToClient(connectionId, (short)(ConfigValues.Networking.MsgType + 1), (MessageBase)(object)message); } public static void SendItemReceivedMessage(ItemReceived itemReceived, int connectionId) { NetworkServer.SendToClient(connectionId, (short)(ConfigValues.Networking.MsgType + 2), (MessageBase)(object)itemReceived); } public static Mission ReadMission(this NetworkReader reader) { return new Mission(reader.ReadMissionType(), reader.ReadString(), reader.ReadBoolean(), reader.ReadInt32(), reader.ReadInt32()); } public static MissionType ReadMissionType(this NetworkReader reader) { return (MissionType)reader.ReadInt32(); } } internal enum ModState { Awaiting, Starting, Started, Ending } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("RPGMod", "RPGMod", "3.7.0")] public class RpgMod : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_GiveMoney <>9__5_2; public static Func<BuffDef, bool> <>9__5_5; public static hook_OnCharacterDeath <>9__5_3; public static hook_OnServerSceneChanged <>9__5_4; internal void <Awake>b__5_2(orig_GiveMoney orig, CharacterMaster self, uint amount) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (ConfigValues.Questing.MissionCollectGoldEnabled && NetworkServer.active && self != null) { PlayerCharacterMasterController component = ((Component)self).GetComponent<PlayerCharacterMasterController>(); NetworkInstanceId? obj; if (component == null) { obj = null; } else { NetworkUser networkUser = component.networkUser; obj = ((networkUser != null) ? new NetworkInstanceId?(((NetworkBehaviour)networkUser).netId) : null); } NetworkInstanceId? val = obj; if (val.HasValue) { Server.UnlockMissionType(MissionType.CollectGold); ((UnityEvent<int, string, NetworkUser>)Events.GoldCollected).Invoke((int)amount, (string)null, ((Component)self).GetComponent<PlayerCharacterMasterController>().networkUser); } } orig.Invoke(self, amount); } internal void <Awake>b__5_3(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) CharacterBody victimBody = damageReport.victimBody; DamageInfo damageInfo = damageReport.damageInfo; object obj; if (damageInfo == null) { obj = null; } else { GameObject attacker = damageInfo.attacker; obj = ((attacker != null) ? attacker.GetComponent<CharacterBody>() : null); } CharacterBody val = (CharacterBody)obj; object master; if (val == null) { master = null; } else { GameObject masterObject = val.masterObject; master = ((masterObject != null) ? masterObject.GetComponent<CharacterMaster>() : null); } NetworkUser killerNetworkUser = GetKillerNetworkUser((CharacterMaster)master); if ((Object)(object)victimBody != (Object)null && (Object)(object)val != (Object)null && killerNetworkUser != null) { _ = ((NetworkBehaviour)killerNetworkUser).netId; if (ConfigValues.Questing.MissionKillAnyEnabled) { Server.UnlockMissionType(MissionType.KillAny); ((UnityEvent<int, string, NetworkUser>)Events.AnyKilled).Invoke(1, (string)null, killerNetworkUser); } if (victimBody.isFlying && ConfigValues.Questing.MissionKillFlyingEnabled) { Server.UnlockMissionType(MissionType.KillFlying); ((UnityEvent<int, string, NetworkUser>)Events.FlyingKilled).Invoke(1, (string)null, killerNetworkUser); } if (!victimBody.isBoss && ConfigValues.Questing.KillSpecificTypeEnabled) { Server.UnlockMissionType(MissionType.KillSpecificName); Server.UnlockMonsterType(victimBody); ((UnityEvent<int, string, NetworkUser>)Events.SpecificNameKilled).Invoke(1, victimBody.baseNameToken, killerNetworkUser); } if (victimBody.isElite && ConfigValues.Questing.MissionKillSpecificBuffEnabled) { Server.UnlockMissionType(MissionType.KillSpecificBuff); foreach (BuffDef item in from x in ((IEnumerable<BuffIndex>)victimBody.ActiveBuffsList()).Select((Func<BuffIndex, BuffDef>)BuffCatalog.GetBuffDef) where x.isElite select x) { Server.UnlockBuffType(item); ((UnityEvent<int, string, NetworkUser>)Events.SpecificBuffKilled).Invoke(1, item.eliteDef.modifierToken, killerNetworkUser); } } if (victimBody.isChampion && ConfigValues.Questing.MissionKillChampionEnabled) { Server.UnlockMissionType(MissionType.KillChampion); ((UnityEvent<int, string, NetworkUser>)Events.ChampionKilled).Invoke(1, (string)null, killerNetworkUser); } else if (victimBody.isElite && ConfigValues.Questing.MissionKillEliteEnabled) { Server.UnlockMissionType(MissionType.KillElite); ((UnityEvent<int, string, NetworkUser>)Events.EliteKilled).Invoke(1, (string)null, killerNetworkUser); } else if (ConfigValues.Questing.MissionKillCommonEnabled) { Server.UnlockMissionType(MissionType.KillCommon); ((UnityEvent<int, string, NetworkUser>)Events.CommonKilled).Invoke(1, (string)null, killerNetworkUser); } } orig.Invoke(self, damageReport); } internal bool <Awake>b__5_5(BuffDef x) { return x.isElite; } internal void <Awake>b__5_4(orig_OnServerSceneChanged orig, Run self, string interactor) { Manager.CleanUp(); orig.Invoke(self, interactor); } } private ModState _modState; public static ManualLogSource Log; public static RpgMod Instance; internal ModState ModState => _modState; private void Awake() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Expected O, but got Unknown //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown Instance = this; Log = ((BaseUnityPlugin)this).Logger; _modState = ModState.Awaiting; Utils.AssetBundle = AssetBundle.LoadFromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("RPGMod.rpgmodbundle")); if (Utils.AssetBundle == null) { return; } DependenciesManager.CheckForDependencies(); ConfigurationManager.Init(((BaseUnityPlugin)this).Config); Run.Start += (hook_Start)delegate(orig_Start orig, Run self) { _modState = ModState.Starting; orig.Invoke(self); }; Run.OnDisable += (hook_OnDisable)delegate(orig_OnDisable orig, Run self) { _modState = ModState.Ending; orig.Invoke(self); }; object obj = <>c.<>9__5_2; if (obj == null) { hook_GiveMoney val = delegate(orig_GiveMoney orig, CharacterMaster self, uint amount) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (ConfigValues.Questing.MissionCollectGoldEnabled && NetworkServer.active && self != null) { PlayerCharacterMasterController component = ((Component)self).GetComponent<PlayerCharacterMasterController>(); NetworkInstanceId? obj5; if (component == null) { obj5 = null; } else { NetworkUser networkUser = component.networkUser; obj5 = ((networkUser != null) ? new NetworkInstanceId?(((NetworkBehaviour)networkUser).netId) : null); } NetworkInstanceId? val5 = obj5; if (val5.HasValue) { Server.UnlockMissionType(MissionType.CollectGold); ((UnityEvent<int, string, NetworkUser>)Events.GoldCollected).Invoke((int)amount, (string)null, ((Component)self).GetComponent<PlayerCharacterMasterController>().networkUser); } } orig.Invoke(self, amount); }; <>c.<>9__5_2 = val; obj = (object)val; } CharacterMaster.GiveMoney += (hook_GiveMoney)obj; object obj2 = <>c.<>9__5_3; if (obj2 == null) { hook_OnCharacterDeath val2 = delegate(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) CharacterBody victimBody = damageReport.victimBody; DamageInfo damageInfo = damageReport.damageInfo; object obj4; if (damageInfo == null) { obj4 = null; } else { GameObject attacker = damageInfo.attacker; obj4 = ((attacker != null) ? attacker.GetComponent<CharacterBody>() : null); } CharacterBody val4 = (CharacterBody)obj4; object master; if (val4 == null) { master = null; } else { GameObject masterObject = val4.masterObject; master = ((masterObject != null) ? masterObject.GetComponent<CharacterMaster>() : null); } NetworkUser killerNetworkUser = GetKillerNetworkUser((CharacterMaster)master); if ((Object)(object)victimBody != (Object)null && (Object)(object)val4 != (Object)null && killerNetworkUser != null) { _ = ((NetworkBehaviour)killerNetworkUser).netId; if (ConfigValues.Questing.MissionKillAnyEnabled) { Server.UnlockMissionType(MissionType.KillAny); ((UnityEvent<int, string, NetworkUser>)Events.AnyKilled).Invoke(1, (string)null, killerNetworkUser); } if (victimBody.isFlying && ConfigValues.Questing.MissionKillFlyingEnabled) { Server.UnlockMissionType(MissionType.KillFlying); ((UnityEvent<int, string, NetworkUser>)Events.FlyingKilled).Invoke(1, (string)null, killerNetworkUser); } if (!victimBody.isBoss && ConfigValues.Questing.KillSpecificTypeEnabled) { Server.UnlockMissionType(MissionType.KillSpecificName); Server.UnlockMonsterType(victimBody); ((UnityEvent<int, string, NetworkUser>)Events.SpecificNameKilled).Invoke(1, victimBody.baseNameToken, killerNetworkUser); } if (victimBody.isElite && ConfigValues.Questing.MissionKillSpecificBuffEnabled) { Server.UnlockMissionType(MissionType.KillSpecificBuff); foreach (BuffDef item in from x in ((IEnumerable<BuffIndex>)victimBody.ActiveBuffsList()).Select((Func<BuffIndex, BuffDef>)BuffCatalog.GetBuffDef) where x.isElite select x) { Server.UnlockBuffType(item); ((UnityEvent<int, string, NetworkUser>)Events.SpecificBuffKilled).Invoke(1, item.eliteDef.modifierToken, killerNetworkUser); } } if (victimBody.isChampion && ConfigValues.Questing.MissionKillChampionEnabled) { Server.UnlockMissionType(MissionType.KillChampion); ((UnityEvent<int, string, NetworkUser>)Events.ChampionKilled).Invoke(1, (string)null, killerNetworkUser); } else if (victimBody.isElite && ConfigValues.Questing.MissionKillEliteEnabled) { Server.UnlockMissionType(MissionType.KillElite); ((UnityEvent<int, string, NetworkUser>)Events.EliteKilled).Invoke(1, (string)null, killerNetworkUser); } else if (ConfigValues.Questing.MissionKillCommonEnabled) { Server.UnlockMissionType(MissionType.KillCommon); ((UnityEvent<int, string, NetworkUser>)Events.CommonKilled).Invoke(1, (string)null, killerNetworkUser); } } orig.Invoke(self, damageReport); }; <>c.<>9__5_3 = val2; obj2 = (object)val2; } GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj2; object obj3 = <>c.<>9__5_4; if (obj3 == null) { hook_OnServerSceneChanged val3 = delegate(orig_OnServerSceneChanged orig, Run self, string interactor) { Manager.CleanUp(); orig.Invoke(self, interactor); }; <>c.<>9__5_4 = val3; obj3 = (object)val3; } Run.OnServerSceneChanged += (hook_OnServerSceneChanged)obj3; } private void Update() { switch (_modState) { case ModState.Starting: Setup(); _modState = ModState.Started; break; case ModState.Started: if (Utils.IsReady) { Client.Update(); if (NetworkServer.active) { Manager.Update(); Networking.Sync(); } } break; case ModState.Ending: CleanUp(); _modState = ModState.Awaiting; break; } } private void Setup() { Networking.Setup(); RefreshUI(); } private static void CleanUp() { Manager.CleanUp(); } internal void RefreshUI() { ((MonoBehaviour)this).StartCoroutine(Utils.Setup()); } private static NetworkUser GetKillerNetworkUser(CharacterMaster master) { object obj; if (master == null) { obj = null; } else { PlayerCharacterMasterController playerCharacterMasterController = master.playerCharacterMasterController; obj = ((playerCharacterMasterController != null) ? playerCharacterMasterController.networkUser : null); } if (Object.op_Implicit((Object)obj)) { if (master == null) { return null; } PlayerCharacterMasterController playerCharacterMasterController2 = master.playerCharacterMasterController; if (playerCharacterMasterController2 == null) { return null; } return playerCharacterMasterController2.networkUser; } object obj2; if (master == null) { obj2 = null; } else { MinionOwnership minionOwnership = master.minionOwnership; if (minionOwnership == null) { obj2 = null; } else { CharacterMaster ownerMaster = minionOwnership.ownerMaster; if (ownerMaster == null) { obj2 = null; } else { PlayerCharacterMasterController playerCharacterMasterController3 = ownerMaster.playerCharacterMasterController; obj2 = ((playerCharacterMasterController3 != null) ? playerCharacterMasterController3.networkUser : null); } } } if (!Object.op_Implicit((Object)obj2)) { return null; } if (master == null) { return null; } MinionOwnership minionOwnership2 = master.minionOwnership; if (minionOwnership2 == null) { return null; } CharacterMaster ownerMaster2 = minionOwnership2.ownerMaster; if (ownerMaster2 == null) { return null; } PlayerCharacterMasterController playerCharacterMasterController4 = ownerMaster2.playerCharacterMasterController; if (playerCharacterMasterController4 == null) { return null; } return playerCharacterMasterController4.networkUser; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "RPGMod"; public const string PLUGIN_NAME = "RPGMod"; public const string PLUGIN_VERSION = "3.7.0"; } } namespace RPGMod.UI { public class Announcer : MonoBehaviour { private readonly GameObject _announcerUI; private readonly GameObject _announcerText; private bool _finished; private float _startTime; private float _vel; private float _vel2; private float _targetY; private float _targetAlpha; private readonly float _fadeTime; private Announcer() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0093: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) _finished = false; _vel = 0f; _vel2 = 0f; _targetY = Utils.ScreenSize.y * ConfigValues.UI.AnnouncerPositionY; _targetAlpha = 1f; _fadeTime = 0.7f; _announcerUI = new GameObject(); _announcerUI.AddComponent<RectTransform>(); _announcerUI.AddComponent<Image>(); _announcerUI.AddComponent<CanvasGroup>(); _announcerUI.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0f); _announcerUI.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0f); _announcerUI.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0f); _announcerUI.GetComponent<RectTransform>().sizeDelta = new Vector2(Utils.ScreenSize.x * ConfigValues.UI.AnnouncerScaleX, 100f); ((Graphic)_announcerUI.GetComponent<Image>()).color = new Color(0.16f, 0.16f, 0.16f, 0.9f); _announcerUI.GetComponent<CanvasGroup>().alpha = 0f; Utils.AddBorder(_announcerUI); _announcerText = new GameObject(); _announcerText.AddComponent<RectTransform>(); _announcerText.AddComponent<TextMeshProUGUI>(); _announcerText.transform.SetParent(_announcerUI.transform); _announcerText.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 1f); _announcerText.GetComponent<RectTransform>().anchorMax = new Vector2(0f, 1f); _announcerText.GetComponent<RectTransform>().pivot = new Vector2(0f, 1f); _announcerText.GetComponent<RectTransform>().sizeDelta = _announcerUI.GetComponent<RectTransform>().sizeDelta; _announcerText.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); ((TMP_Text)_announcerText.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)257; ((TMP_Text)_announcerText.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)_announcerText.GetComponent<TextMeshProUGUI>()).fontSize = 24f; ((TMP_Text)_announcerText.GetComponent<TextMeshProUGUI>()).margin = new Vector4(10f, 10f, 10f, 10f); ((TMP_Text)_announcerText.GetComponent<TextMeshProUGUI>()).text = ""; _announcerUI.transform.SetParent(((Component)this).transform); ((Transform)_announcerUI.GetComponent<RectTransform>()).localPosition = new Vector3(0f, 0f, 0f); _announcerUI.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, (0f - Utils.ScreenSize.y) * 0.03f, 0f)); ((Transform)_announcerUI.GetComponent<RectTransform>()).localScale = new Vector3(Utils.HudScale, Utils.HudScale, Utils.HudScale); } public void SetMessage(string message) { ((MonoBehaviour)this).StartCoroutine(PlayText(message)); } private void Update() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) _announcerUI.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, Mathf.SmoothDamp(_announcerUI.GetComponent<RectTransform>().anchoredPosition.y, _targetY, ref _vel, _fadeTime), 0f)); _announcerUI.GetComponent<CanvasGroup>().alpha = Mathf.SmoothDamp(_announcerUI.GetComponent<CanvasGroup>().alpha, _targetAlpha, ref _vel2, _fadeTime); if (_finished && Run.instance.GetRunStopwatch() - _startTime >= _fadeTime + 0.5f) { Destroy(); } } private IEnumerator PlayText(string text) { for (int i = 0; i < text.Length; i++) { if (text[i] == '<') { for (; text[i] != '>' && i < text.Length - 1; i++) { TextMeshProUGUI component = _announcerText.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component).text = ((TMP_Text)component).text + text[i]; } } Util.PlaySound("Play_UI_ChatMessage", ((Component)RoR2Application.instance).gameObject); TextMeshProUGUI component2 = _announcerText.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component2).text = ((TMP_Text)component2).text + text[i]; if (i < text.Length - 1 && (text[i + 1] == ' ' || text[i + 1] == '.' || text[i + 1] == ',')) { i++; TextMeshProUGUI component3 = _announcerText.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component3).text = ((TMP_Text)component3).text + text[i]; yield return (object)new WaitForSeconds(0.085f); } else { yield return (object)new WaitForSeconds(0.035f); } } yield return (object)new WaitForSeconds(5f); _startTime = Run.instance.GetRunStopwatch(); _targetAlpha = 0f; _targetY = -30f; _finished = true; } public void Destroy() { Object.Destroy((Object)(object)_announcerUI); Object.Destroy((Object)(object)this); } } public class MissionComponent : MonoBehaviour { private float _progressVel; private readonly GameObject _missionUI; private Mission _mission; public int Index; private MissionComponent() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected O, but got Unknown //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Expected O, but got Unknown //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_0367: 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_0379: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) _progressVel = 0f; _missionUI = new GameObject(); _missionUI.AddComponent<RectTransform>(); _missionUI.transform.SetParent(((Component)this).transform); _missionUI.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0f); _missionUI.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0f); _missionUI.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); _missionUI.GetComponent<RectTransform>().sizeDelta = new Vector2(300f, 60f); GameObject val = new GameObject { name = "description" }; val.AddComponent<RectTransform>(); val.AddComponent<TextMeshProUGUI>(); val.transform.SetParent(_missionUI.transform); val.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 1f); val.GetComponent<RectTransform>().anchorMax = new Vector2(0f, 1f); val.GetComponent<RectTransform>().pivot = new Vector2(0f, 1f); val.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(10f, -10f, 0f)); ((TMP_Text)val.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)1025; ((TMP_Text)val.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)val.GetComponent<TextMeshProUGUI>()).fontSize = 16.5f; GameObject val2 = new GameObject { name = "progress" }; val2.AddComponent<RectTransform>(); val2.AddComponent<TextMeshProUGUI>(); val2.transform.SetParent(_missionUI.transform); val2.GetComponent<RectTransform>().anchorMin = new Vector2(1f, 1f); val2.GetComponent<RectTransform>().anchorMax = new Vector2(1f, 1f); val2.GetComponent<RectTransform>().pivot = new Vector2(1f, 1f); val2.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(-10f, -10f, 0f)); ((TMP_Text)val2.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)1028; ((TMP_Text)val2.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)val2.GetComponent<TextMeshProUGUI>()).fontSize = 16.5f; GameObject val3 = new GameObject { name = "progressBarBackground" }; val3.AddComponent<RectTransform>(); val3.AddComponent<Image>(); val3.transform.SetParent(val.transform); val3.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 0f); val3.GetComponent<RectTransform>().anchorMax = new Vector2(0f, 0f); val3.GetComponent<RectTransform>().pivot = new Vector2(0f, 1f); val3.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, -5f, 0f)); val3.GetComponent<RectTransform>().sizeDelta = new Vector2(_missionUI.GetComponent<RectTransform>().sizeDelta.x - 20f, 8f); ((Graphic)val3.GetComponent<Image>()).color = new Color(0f, 0f, 0f, 0.7f); Utils.AddBorder(val3); GameObject val4 = new GameObject { name = "progressBar" }; val4.AddComponent<RectTransform>(); val4.AddComponent<Image>(); val4.transform.SetParent(val3.transform); val4.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 1f); val4.GetComponent<RectTransform>().anchorMax = new Vector2(0f, 1f); val4.GetComponent<RectTransform>().pivot = new Vector2(0f, 1f); val4.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); val4.GetComponent<RectTransform>().sizeDelta = val3.GetComponent<RectTransform>().sizeDelta; ((Transform)val4.GetComponent<RectTransform>()).localScale = new Vector3(0f, 1f, 1f); } public void UpdateData(Mission mission, int i) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) _mission = mission; _missionUI.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, (float)(-55 * i), 0f)); } private void Update() { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)((Component)_missionUI.transform.Find("description")).GetComponent<TextMeshProUGUI>()).text = string.Format(Quest.QuestTypeDict[_mission.MissionType], Language.GetString(_mission.MissionSpecification).RemoveReplacementTokens()); ((Component)_missionUI.transform.Find("description")).GetComponent<RectTransform>().sizeDelta = ((TMP_Text)((Component)_missionUI.transform.Find("description")).GetComponent<TextMeshProUGUI>()).GetPreferredValues(); ((TMP_Text)((Component)_missionUI.transform.Find("progress")).GetComponent<TextMeshProUGUI>()).text = $"{_mission.Progress}/{_mission.Objective}"; ((Component)_missionUI.transform.Find("progress")).GetComponent<RectTransform>().sizeDelta = ((TMP_Text)((Component)_missionUI.transform.Find("progress")).GetComponent<TextMeshProUGUI>()).GetPreferredValues(); ((Component)_missionUI.transform.Find("description").Find("progressBarBackground").Find("progressBar")).transform.localScale = new Vector3(Mathf.SmoothDamp(((Component)_missionUI.transform.Find("description").Find("progressBarBackground").Find("progressBar")).transform.localScale.x, (float)_mission.Progress / (float)_mission.Objective, ref _progressVel, 0.7f), 1f, 1f); } public void Destroy() { Object.Destroy((Object)(object)_missionUI); } } public class Quest : MonoBehaviour { public static readonly Dictionary<MissionType, string> QuestTypeDict = new Dictionary<MissionType, string> { { MissionType.KillAny, "Kill any enemies" }, { MissionType.KillCommon, "Kill common enemies" }, { MissionType.KillElite, "Kill elite enemies" }, { MissionType.KillChampion, "Kill champion enemies" }, { MissionType.KillFlying, "Kill flying enemies" }, { MissionType.CollectGold, "Collect gold" }, { MissionType.KillSpecificName, "Kill {0}" }, { MissionType.KillSpecificBuff, "Kill {0} enemies" } }; private readonly GameObject _questUI; private readonly GameObject _questTitle; private readonly GameObject _rewardBacking; private readonly GameObject _rewardText; private readonly GameObject _reward; private readonly GameObject _timer; private float _backgroundVel; private readonly float _fadeTime; private float _startTime; private float _moveVel; private float _alphaVel; private float _targetX; private float _targetAlpha; private List<MissionComponent> _missionComponents; private bool _finished; private UIState _state; private QuestData _clientData; private Quest() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Expected O, but got Unknown //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Expected O, but got Unknown //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0323: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Expected O, but got Unknown //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_0418: 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_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Unknown result type (might be due to invalid IL or missing references) //IL_04a8: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Expected O, but got Unknown //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_0506: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_053f: Unknown result type (might be due to invalid IL or missing references) //IL_0544: Unknown result type (might be due to invalid IL or missing references) //IL_055e: Unknown result type (might be due to invalid IL or missing references) //IL_057d: Unknown result type (might be due to invalid IL or missing references) //IL_0588: Unknown result type (might be due to invalid IL or missing references) //IL_0592: Expected O, but got Unknown //IL_05d5: Unknown result type (might be due to invalid IL or missing references) //IL_05f4: Unknown result type (might be due to invalid IL or missing references) //IL_0613: Unknown result type (might be due to invalid IL or missing references) //IL_0637: Unknown result type (might be due to invalid IL or missing references) //IL_063c: Unknown result type (might be due to invalid IL or missing references) //IL_0657: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Expected O, but got Unknown //IL_06bf: Unknown result type (might be due to invalid IL or missing references) //IL_06de: Unknown result type (might be due to invalid IL or missing references) //IL_06fd: Unknown result type (might be due to invalid IL or missing references) //IL_0721: Unknown result type (might be due to invalid IL or missing references) //IL_0726: Unknown result type (might be due to invalid IL or missing references) _targetX = Utils.ScreenSize.x * ConfigValues.UI.QuestPositionX; _backgroundVel = 0f; _fadeTime = 0.7f; _finished = false; _moveVel = 0f; _alphaVel = 0f; _targetAlpha = 1f; _state = UIState.Creating; _questUI = new GameObject(); _questUI.AddComponent<RectTransform>(); _questUI.AddComponent<Image>(); _questUI.AddComponent<CanvasGroup>(); _questUI.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 0f); _questUI.GetComponent<RectTransform>().anchorMax = new Vector2(0f, 0f); _questUI.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); ((Graphic)_questUI.GetComponent<Image>()).color = new Color(0.16f, 0.16f, 0.16f, 0.9f); _questUI.GetComponent<CanvasGroup>().alpha = 0f; Utils.AddBorder(_questUI); _questTitle = new GameObject(); _questTitle.AddComponent<RectTransform>(); _questTitle.AddComponent<TextMeshProUGUI>(); _questTitle.transform.SetParent(_questUI.transform); _questTitle.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 1f); _questTitle.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 1f); _questTitle.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); _questTitle.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); ((TMP_Text)_questTitle.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514; ((TMP_Text)_questTitle.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)_questTitle.GetComponent<TextMeshProUGUI>()).fontSize = 38f; ((TMP_Text)_questTitle.GetComponent<TextMeshProUGUI>()).text = "QUEST"; _questTitle.GetComponent<RectTransform>().sizeDelta = ((TMP_Text)_questTitle.GetComponent<TextMeshProUGUI>()).GetPreferredValues(); _timer = new GameObject(); _timer.AddComponent<RectTransform>(); _timer.AddComponent<TextMeshProUGUI>(); _timer.transform.SetParent(_questTitle.transform); _timer.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0f); _timer.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0f); _timer.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); _timer.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514; ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).fontSize = 20f; ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).text = "Remaining time: 00:00"; _timer.GetComponent<RectTransform>().sizeDelta = ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).GetPreferredValues(); _rewardBacking = new GameObject(); _rewardBacking.AddComponent<RectTransform>(); _rewardBacking.AddComponent<Image>(); _rewardBacking.transform.SetParent(_timer.transform); _rewardBacking.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0f); _rewardBacking.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0f); _rewardBacking.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); _rewardBacking.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, -10f, 0f)); _rewardBacking.GetComponent<RectTransform>().sizeDelta = new Vector2(240f, 65f); ((Graphic)_rewardBacking.GetComponent<Image>()).color = new Color(0f, 0f, 0f, 0.5f); GameObject val = new GameObject(); val.AddComponent<RectTransform>(); val.AddComponent<Image>(); val.transform.SetParent(_rewardBacking.transform); val.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); val.GetComponent<RectTransform>().sizeDelta = new Vector2(72f, 72f); ((Graphic)val.GetComponent<Image>()).color = new Color(0.16f, 0.16f, 0.16f); _reward = new GameObject(); _reward.AddComponent<RectTransform>(); _reward.AddComponent<RawImage>(); _reward.transform.SetParent(val.transform); _reward.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0.5f); _reward.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0.5f); _reward.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0.5f); _reward.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); _reward.GetComponent<RectTransform>().sizeDelta = val.GetComponent<RectTransform>().sizeDelta; Utils.AddBorder(_reward); _rewardText = new GameObject(); _rewardText.AddComponent<RectTransform>(); _rewardText.AddComponent<TextMeshProUGUI>(); _rewardText.transform.SetParent(_reward.transform); _rewardText.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0f); _rewardText.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0f); _rewardText.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); _rewardText.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, -5f, 0f)); ((TMP_Text)_rewardText.GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514; ((TMP_Text)_rewardText.GetComponent<TextMeshProUGUI>()).font = HGTextMeshProUGUI.defaultLanguageFont; ((TMP_Text)_rewardText.GetComponent<TextMeshProUGUI>()).fontSize = 20f; } public void UpdateData(QuestData newQuestData) { _clientData = newQuestData; } private void Update() { //IL_0025: 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_009f: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: 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_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_04b7: Unknown result type (might be due to invalid IL or missing references) //IL_0509: Unknown result type (might be due to invalid IL or missing references) //IL_051e: Unknown result type (might be due to invalid IL or missing references) //IL_0533: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_0590: Unknown result type (might be due to invalid IL or missing references) //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05c6: Unknown result type (might be due to invalid IL or missing references) //IL_05d6: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Unknown result type (might be due to invalid IL or missing references) if (_clientData == null) { return; } switch (_state) { case UIState.Creating: { PickupDef pickupDef = PickupCatalog.GetPickupDef(_clientData.Reward); if (pickupDef == null) { RpgMod.Log.LogWarning((object)$"PickupDef {_clientData.Reward} is null."); return; } ((TMP_Text)_rewardText.GetComponent<TextMeshProUGUI>()).text = Language.GetString(pickupDef.nameToken); _rewardText.GetComponent<RectTransform>().sizeDelta = ((TMP_Text)_rewardText.GetComponent<TextMeshProUGUI>()).GetPreferredValues(); ((Graphic)_rewardText.GetComponent<TextMeshProUGUI>()).color = pickupDef.baseColor; _reward.GetComponent<RawImage>().texture = pickupDef.iconTexture; _missionComponents = new List<MissionComponent>(); for (int i = 0; i < _clientData.Missions.Count; i++) { MissionComponent missionComponent = _rewardText.AddComponent<MissionComponent>(); missionComponent.Index = i; _missionComponents.Add(missionComponent); } _questUI.transform.SetParent(((Component)this).transform); _questUI.GetComponent<RectTransform>().sizeDelta = new Vector2(300f, _timer.GetComponent<RectTransform>().sizeDelta.y + _questTitle.GetComponent<RectTransform>().sizeDelta.y + 27f + _rewardBacking.GetComponent<RectTransform>().sizeDelta.y + (float)(55 * _clientData.Missions.Count) + _rewardText.GetComponent<RectTransform>().sizeDelta.y); ((Transform)_questUI.GetComponent<RectTransform>()).localPosition = new Vector3(0f, 0f, 0f); _questUI.GetComponent<RectTransform>().anchoredPosition = new Vector2(Utils.ScreenSize.x * ConfigValues.UI.QuestPositionX + 60f, Utils.ScreenSize.y * ConfigValues.UI.QuestPositionY); ((Transform)_questUI.GetComponent<RectTransform>()).localScale = new Vector3(Utils.HudScale, Utils.HudScale, Utils.HudScale); ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).text = "Time limit: 00:00"; ((Graphic)_timer.GetComponent<TextMeshProUGUI>()).color = Color.white; _state = UIState.Updating; break; } case UIState.Updating: { if ((_clientData.Complete || _clientData.Failed) && !_finished) { _startTime = Run.instance.GetRunStopwatch(); _targetAlpha = 0f; _targetX = Utils.ScreenSize.x * ConfigValues.UI.QuestPositionX + 60f; _finished = true; } float num = Math.Max(0f, _clientData.LimitTime - Run.instance.GetRunStopwatch()); if (_clientData.Failed || num == 0f) { ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).text = "QUEST FAILED"; ((Graphic)_timer.GetComponent<TextMeshProUGUI>()).color = Color.red; for (int num2 = _missionComponents.Count - 1; num2 >= 0; num2--) { _missionComponents[num2].Destroy(); Object.Destroy((Object)(object)_missionComponents[num2]); _missionComponents.RemoveAt(num2); } } else { for (int num3 = _missionComponents.Count - 1; num3 >= 0; num3--) { _missionComponents[num3].UpdateData(_clientData.Missions[_missionComponents[num3].Index], num3); if (_clientData.Missions[_missionComponents[num3].Index].IsCompleted) { _missionComponents[num3].Destroy(); Object.Destroy((Object)(object)_missionComponents[num3]); _missionComponents.RemoveAt(num3); } } ((TMP_Text)_timer.GetComponent<TextMeshProUGUI>()).text = $"Time limit: {TimeSpan.FromSeconds(num):mm':'ss}"; if (num < 60f) { ((Graphic)_timer.GetComponent<TextMeshProUGUI>()).color = Color.red; } } RectTransform component = _questUI.GetComponent<RectTransform>(); _questUI.GetComponent<RectTransform>().anchoredPosition = new Vector2(Mathf.SmoothDamp(component.anchoredPosition.x, _targetX, ref _moveVel, _fadeTime), Utils.ScreenSize.y * ConfigValues.UI.QuestPositionY); _questUI.GetComponent<CanvasGroup>().alpha = Mathf.SmoothDamp(_questUI.GetComponent<CanvasGroup>().alpha, _targetAlpha, ref _alphaVel, _fadeTime); _questUI.GetComponent<RectTransform>().sizeDelta = new Vector2(300f, Mathf.SmoothDamp(component.sizeDelta.y, _timer.GetComponent<RectTransform>().sizeDelta.y + _questTitle.GetComponent<RectTransform>().sizeDelta.y + 27f + _rewardBacking.GetComponent<RectTransform>().sizeDelta.y + (float)(55 * _missionComponents.Count) + _rewardText.GetComponent<RectTransform>().sizeDelta.y, ref _backgroundVel, 0.7f)); ((Component)_questUI.transform.Find("border")).GetComponent<RectTransform>().sizeDelta = new Vector2(component.sizeDelta.x + 2f, component.sizeDelta.y + 2f); break; } } if (_finished && Run.instance.GetRunStopwatch() - _startTime >= _fadeTime + 0.5f) { Destroy(); } } public void Destroy() { Object.Destroy((Object)(object)_questUI); Object.Destroy((Object)(object)this); } } internal enum UIState { Creating, Updating } public static class Utils { public static AssetBundle AssetBundle; public static Vector2 ScreenSize; public static bool IsReady; public static float HudScale { get; private set; } public static IEnumerator Setup() { IsReady = false; BaseConVar val = Console.instance.FindConVar("hud_scale"); if (ConfigValues.UI.UseHUDScale) { float num = default(float); if (val != null && TextSerialization.TryParseInvariant(val.GetString(), ref num)) { HudScale = num / 100f; } } else { HudScale = ConfigValues.UI.HUDScaleOverride; } while (!IsReady) { yield return (object)new WaitForSeconds(0.1f); if (LocalUserManager.GetFirstLocalUser() == null) { continue; } LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); object obj; if (firstLocalUser == null) { obj = null; } else { CameraRigController cameraRigController = firstLocalUser.cameraRigController; obj = ((cameraRigController != null) ? cameraRigController.hud : null); } if (!((Object)obj == (Object)null)) { LocalUser firstLocalUser2 = LocalUserManager.GetFirstLocalUser(); Vector2? obj2; if (firstLocalUser2 == null) { obj2 = null; } else { CameraRigController cameraRigController2 = firstLocalUser2.cameraRigController; obj2 = ((cameraRigController2 != null) ? new Vector2?(((Component)cameraRigController2.hud).GetComponent<RectTransform>().sizeDelta) : null); } ScreenSize = (Vector2)(((??)obj2) ?? new Vector2(0f, 0f)); if (!(ScreenSize.x <= 1f) && !(ScreenSize.y <= 1f)) { IsReady = true; } } } } public static void AddBorder(GameObject element) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject { name = "border" }; val.AddComponent<RectTransform>(); val.AddComponent<Image>(); val.transform.SetParent(element.transform); val.GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0.5f); val.GetComponent<RectTransform>().sizeDelta = new Vector2(element.GetComponent<RectTransform>().sizeDelta.x + 2f, element.GetComponent<RectTransform>().sizeDelta.y + 2f); val.GetComponent<RectTransform>().anchoredPosition = Vector2.op_Implicit(new Vector3(0f, 0f, 0f)); val.GetComponent<Image>().sprite = Object.Instantiate<Sprite>(AssetBundle.LoadAsset<Sprite>("Assets/UIBorder.png")); val.GetComponent<Image>().type = (Type)1; } } } namespace RPGMod.SoftDependencies { internal static class DependenciesManager { public const string RiskOfOptionsGuid = "com.rune580.riskofoptions"; public static bool IsRiskOfOptionsPresent; public static void CheckForDependencies() { IsRiskOfOptionsPresent = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); } } internal static class RiskOfOptionsHelper { private const string GUID = "RPGMod"; private const string ModName = "RPGMod"; public static void RegisterModInfo(string description, Sprite iconSprite = null) { if (DependenciesManager.IsRiskOfOptionsPresent) { ModSettingsManager.SetModDescription(description, "RPGMod", "RPGMod"); if ((Object)(object)iconSprite != (Object)null) { ModSettingsManager.SetModIcon(iconSprite, "RPGMod", "RPGMod"); } } } public static ConfigEntry<int> AddOptionSlider(this ConfigEntry<int> configEntry, bool restartRequired = false) { int min = int.MinValue; int max = int.MaxValue; if (((ConfigEntryBase)configEntry).Description.AcceptableValues != null && ((object)((ConfigEntryBase)configEntry).Description.AcceptableValues).GetType() == typeof(AcceptableValueRange<int>)) { AcceptableValueRange<int> obj = ((ConfigEntryBase)configEntry).Description.AcceptableValues as AcceptableValueRange<int>; min = obj.MinValue; max = obj.MaxValue; } return AddOptionSlider(configEntry, min, max, restartRequired); } public static ConfigEntry<int> AddOptionSlider(ConfigEntry<int> configEntry, int min, int max, bool restartRequired = false) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0029: Expected O, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown if (!DependenciesManager.IsRiskOfOptionsPresent) { return configEntry; } ModSettingsManager.AddOption((BaseOption)new IntSliderOption(configEntry, new IntSliderConfig { min = min, max = max, restartRequired = restartRequired }), "RPGMod", "RPGMod"); return configEntry; } public static ConfigEntry<float> AddOptionSlider(this ConfigEntry<float> configEntry, bool restartRequired = false) { float min = float.MinValue; float max = float.MaxValue; if (((ConfigEntryBase)configEntry).Description.AcceptableValues != null && ((object)((ConfigEntryBase)configEntry).Description.AcceptableValues).GetType() == typeof(AcceptableValueRange<float>)) { AcceptableValueRange<float> obj = ((ConfigEntryBase)configEntry).Description.AcceptableValues as AcceptableValueRange<float>; min = obj.MinValue; max = obj.MaxValue; } return AddOptionSlider(configEntry, min, max, restartRequired); } public static ConfigEntry<float> AddOptionSlider(ConfigEntry<float> configEntry, float min, float max, bool restartRequired = false) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown if (!DependenciesManager.IsRiskOfOptionsPresent) { return configEntry; } ModSettingsManager.AddOption((BaseOption)new StepSliderOption(configEntry, new StepSliderConfig { min = min, max = max, increment = 0.1f, restartRequired = restartRequired }), "RPGMod", "RPGMod"); return configEntry; } public static ConfigEntry<bool> AddOptionBool(this ConfigEntry<bool> configEntry, bool restartRequired = false) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown if (!DependenciesManager.IsRiskOfOptionsPresent) { return configEntry; } ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(configEntry, restartRequired), "RPGMod", "RPGMod"); return configEntry; } public static ConfigEntry<string> AddOptionString(this ConfigEntry<string> configEntry, bool restartRequired = false) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown if (!DependenciesManager.IsRiskOfOptionsPresent) { return configEntry; } ModSettingsManager.AddOption((BaseOption)new StringInputFieldOption(configEntry, new InputFieldConfig { submitOn = (SubmitEnum)6, restartRequired = restartRequired }), "RPGMod", "RPGMod"); return configEntry; } } } namespace RPGMod.Questing { public class Announcement : MessageBase { public string Message { get; private set; } public Announcement() { Message = null; } public Announcement(string message) { Message = message; } public override void Serialize(NetworkWriter writer) { writer.Write(Message); } public override void Deserialize(NetworkReader reader) { Message = reader.ReadString(); } public static void Handler(NetworkMessage networkMessage) { Client.Announcements.Add(networkMessage.ReadMessage<Announcement>()); } } public static class Blacklist { private static ItemMask _cachedAvailableItems = new ItemMask(); private static ItemMask _blacklistedItems = new ItemMask(); private static readonly List<PickupIndex> _availableTier1DropList = new List<PickupIndex>(); private static readonly List<PickupIndex> _availableTier2DropList = new List<PickupIndex>(); private static readonly List<PickupIndex> _availableTier3DropList = new List<PickupIndex>(); public static List<PickupIndex> AvailableTier1DropList => Get(_availableTier1DropList); public static List<PickupIndex> AvailableTier2DropList => Get(_availableTier2DropList); public static List<PickupIndex> AvailableTier3DropList => Get(_availableTier3DropList); public static void ClearCache() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown _cachedAvailableItems = new ItemMask(); } private static void LoadBlackListItems() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_0017: Unknown result type