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 ArtifactOfOrder v1.0.1
plugins\ArtifactOfOrder.dll
Decompiled 3 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("ArtifactOfOrder")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ArtifactOfOrder")] [assembly: AssemblyTitle("ArtifactOfOrder")] [assembly: AssemblyVersion("1.0.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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ArtifactOfOrder { internal static class OrderHooks { [CompilerGenerated] private static class <>O { public static Action<Run> <0>__OnRunStartGlobal; public static hook_GenerateDrop <1>__OnGenerateDrop; public static hook_GetRandomPickupIndex <2>__OnChestGetRandomPickupIndex; public static hook_SetPickupIndex <3>__OnSetPickupIndex; public static hook_CreatePickupDroplet_PickupIndex_Vector3_Vector3 <4>__OnCreatePickupDroplet; public static hook_CreatePickupDroplet_UniquePickup_Vector3_Vector3 <5>__OnCreateUniquePickupDroplet; public static hook_CreatePickup <6>__OnCreatePickup; } private static bool _registered; internal static void Register() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_00aa: 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_00b5: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown if (!_registered) { _registered = true; Run.onRunStartGlobal += OnRunStartGlobal; object obj = <>O.<1>__OnGenerateDrop; if (obj == null) { hook_GenerateDrop val = OnGenerateDrop; <>O.<1>__OnGenerateDrop = val; obj = (object)val; } PickupDropTable.GenerateDrop += (hook_GenerateDrop)obj; object obj2 = <>O.<2>__OnChestGetRandomPickupIndex; if (obj2 == null) { hook_GetRandomPickupIndex val2 = OnChestGetRandomPickupIndex; <>O.<2>__OnChestGetRandomPickupIndex = val2; obj2 = (object)val2; } ChestBehavior.GetRandomPickupIndex += (hook_GetRandomPickupIndex)obj2; object obj3 = <>O.<3>__OnSetPickupIndex; if (obj3 == null) { hook_SetPickupIndex val3 = OnSetPickupIndex; <>O.<3>__OnSetPickupIndex = val3; obj3 = (object)val3; } ShopTerminalBehavior.SetPickupIndex += (hook_SetPickupIndex)obj3; object obj4 = <>O.<4>__OnCreatePickupDroplet; if (obj4 == null) { hook_CreatePickupDroplet_PickupIndex_Vector3_Vector3 val4 = OnCreatePickupDroplet; <>O.<4>__OnCreatePickupDroplet = val4; obj4 = (object)val4; } PickupDropletController.CreatePickupDroplet_PickupIndex_Vector3_Vector3 += (hook_CreatePickupDroplet_PickupIndex_Vector3_Vector3)obj4; object obj5 = <>O.<5>__OnCreateUniquePickupDroplet; if (obj5 == null) { hook_CreatePickupDroplet_UniquePickup_Vector3_Vector3 val5 = OnCreateUniquePickupDroplet; <>O.<5>__OnCreateUniquePickupDroplet = val5; obj5 = (object)val5; } PickupDropletController.CreatePickupDroplet_UniquePickup_Vector3_Vector3 += (hook_CreatePickupDroplet_UniquePickup_Vector3_Vector3)obj5; object obj6 = <>O.<6>__OnCreatePickup; if (obj6 == null) { hook_CreatePickup val6 = OnCreatePickup; <>O.<6>__OnCreatePickup = val6; obj6 = (object)val6; } GenericPickupController.CreatePickup += (hook_CreatePickup)obj6; Plugin.LogSource.LogInfo((object)"Artifact of Order hooks registered."); } } private static void OnRunStartGlobal(Run run) { Plugin.LogSource.LogInfo((object)"Artifact of Order received Run.onRunStartGlobal."); OrderRunState.Initialize(run); } private static PickupIndex OnGenerateDrop(orig_GenerateDrop orig, PickupDropTable self, Xoroshiro128Plus rng) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) PickupIndex pickupIndex = orig.Invoke(self, rng); return OrderRunState.ReplacePickup(pickupIndex); } private static PickupIndex OnChestGetRandomPickupIndex(orig_GetRandomPickupIndex orig, ChestBehavior self) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) PickupIndex pickupIndex = orig.Invoke(self); return OrderRunState.ReplacePickup(pickupIndex); } private static void OnSetPickupIndex(orig_SetPickupIndex orig, ShopTerminalBehavior self, PickupIndex newPickupIndex, bool newHidden) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, OrderRunState.ReplacePickup(newPickupIndex), newHidden); } private static void OnCreatePickupDroplet(orig_CreatePickupDroplet_PickupIndex_Vector3_Vector3 orig, PickupIndex pickupIndex, Vector3 position, Vector3 velocity) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(OrderRunState.ReplacePickup(pickupIndex), position, velocity); } private static void OnCreateUniquePickupDroplet(orig_CreatePickupDroplet_UniquePickup_Vector3_Vector3 orig, UniquePickup pickup, Vector3 position, Vector3 velocity) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(OrderRunState.ReplacePickup(pickup), position, velocity); } private static GenericPickupController OnCreatePickup(orig_CreatePickup orig, ref CreatePickupInfo createPickupInfo) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) ((CreatePickupInfo)(ref createPickupInfo)).pickupIndex = OrderRunState.ReplacePickup(((CreatePickupInfo)(ref createPickupInfo)).pickupIndex); ((CreatePickupInfo)(ref createPickupInfo)).pickup = OrderRunState.ReplacePickup(((CreatePickupInfo)(ref createPickupInfo)).pickup); return orig.Invoke(ref createPickupInfo); } } internal static class OrderRunState { private static readonly ItemTier[] SupportedTiers; private static readonly Dictionary<ItemTier, PickupIndex> SelectedPickups; private static bool _active; private static ulong _seed; internal static void Initialize(Run run) { //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) SelectedPickups.Clear(); _active = false; _seed = 0uL; if ((Object)(object)run == (Object)null || !((NetworkBehaviour)run).isServer) { return; } bool flag = (Object)(object)OrderArtifact.ArtifactDef != (Object)null && (Object)(object)RunArtifactManager.instance != (Object)null && RunArtifactManager.instance.IsArtifactEnabled(OrderArtifact.ArtifactDef); Plugin.LogSource.LogInfo((object)$"Artifact of Order initialize check: artifactEnabled={flag}, seed={run.seed}, isServer={((NetworkBehaviour)run).isServer}."); if (flag) { if (Plugin.ItemsPerTier.Value != 1) { Plugin.LogSource.LogWarning((object)$"ItemsPerTier is set to {Plugin.ItemsPerTier.Value}, but the current implementation supports exactly 1. Clamping to 1."); } _active = true; _seed = (Plugin.UseSeededRng.Value ? run.seed : ((ulong)DateTime.UtcNow.Ticks)); Xoroshiro128Plus rng = new Xoroshiro128Plus(_seed); ItemTier[] supportedTiers = SupportedTiers; foreach (ItemTier tier in supportedTiers) { TrySelectForTier(run, tier, rng); } if (Plugin.EnableLunar.Value) { TrySelectForTier(run, (ItemTier)3, rng); } if (Plugin.EnableVoid.Value) { TrySelectForTier(run, (ItemTier)6, rng); TrySelectForTier(run, (ItemTier)7, rng); TrySelectForTier(run, (ItemTier)8, rng); TrySelectForTier(run, (ItemTier)9, rng); } ApplySelectionsToRun(run); BroadcastSelections(); Plugin.LogSource.LogInfo((object)"Artifact of Order applied run drop list replacements."); } } internal static PickupIndex ReplacePickup(PickupIndex pickupIndex) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) if (!_active || !((PickupIndex)(ref pickupIndex)).isValid) { return pickupIndex; } PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); if (pickupDef == null) { return pickupIndex; } PickupIndex value; return (SelectedPickups.TryGetValue(pickupDef.itemTier, out value) && ((PickupIndex)(ref value)).isValid) ? value : pickupIndex; } internal static UniquePickup ReplacePickup(UniquePickup pickup) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_004c: 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) //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (!_active || !((UniquePickup)(ref pickup)).isValid) { return pickup; } PickupIndex val = ReplacePickup(pickup.pickupIndex); return (((PickupIndex)(ref val)).isValid && val != pickup.pickupIndex) ? ((UniquePickup)(ref pickup)).WithPickupIndex(val) : pickup; } private static void TrySelectForTier(Run run, ItemTier tier, Xoroshiro128Plus rng) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0021: Unknown result type (might be due to invalid IL or missing references) List<PickupIndex> candidatesForTier = GetCandidatesForTier(run, tier); if (candidatesForTier.Count == 0) { Plugin.LogSource.LogWarning((object)$"Artifact of Order found no valid pickups for tier {tier}. Leaving vanilla behavior for that tier."); return; } PickupIndex val = rng.NextElementUniform<PickupIndex>(candidatesForTier); SelectedPickups[tier] = val; Plugin.LogSource.LogInfo((object)$"Artifact of Order selected {GetPickupDisplayName(val)} for {tier}."); } private static List<PickupIndex> GetCandidatesForTier(Run run, ItemTier tier) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) List<PickupIndex> runDropList = GetRunDropList(run, tier); if (runDropList == null || runDropList.Count == 0) { return new List<PickupIndex>(); } return runDropList.Where(IsValidCandidate).Distinct().ToList(); } private static bool IsValidCandidate(PickupIndex pickupIndex) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Invalid comparison between Unknown and I4 //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) if (!((PickupIndex)(ref pickupIndex)).isValid) { return false; } PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); if (pickupDef == null || (int)pickupDef.itemIndex == -1) { return false; } ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); if ((Object)(object)itemDef == (Object)null) { return false; } ItemTierDef itemTierDef = ItemTierCatalog.GetItemTierDef(itemDef.tier); if (itemDef.hidden || (Object)(object)itemTierDef == (Object)null || !itemTierDef.isDroppable) { return false; } return !itemDef.ContainsTag((ItemTag)10) && !itemDef.ContainsTag((ItemTag)14) && !itemDef.ContainsTag((ItemTag)9) && !itemDef.ContainsTag((ItemTag)25); } private static void ApplySelectionsToRun(Run run) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) foreach (KeyValuePair<ItemTier, PickupIndex> selectedPickup in SelectedPickups) { List<PickupIndex> runDropList = GetRunDropList(run, selectedPickup.Key); if (runDropList != null) { runDropList.Clear(); runDropList.Add(selectedPickup.Value); } } } private static List<PickupIndex>? GetRunDropList(Run run, ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown if (1 == 0) { } List<PickupIndex> result = (int)tier switch { 0 => run.availableTier1DropList, 1 => run.availableTier2DropList, 2 => run.availableTier3DropList, 4 => run.availableBossDropList, 3 => run.availableLunarItemDropList, 6 => run.availableVoidTier1DropList, 7 => run.availableVoidTier2DropList, 8 => run.availableVoidTier3DropList, 9 => run.availableVoidBossDropList, _ => null, }; if (1 == 0) { } return result; } private static void BroadcastSelections() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = BuildSelectionMessage(), paramTokens = Array.Empty<string>() }); } private static string BuildSelectionMessage() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) List<string> list = new List<string> { "<style=cIsUtility>Artifact of Order selections:</style>" }; ItemTier[] supportedTiers = SupportedTiers; foreach (ItemTier val in supportedTiers) { if (SelectedPickups.TryGetValue(val, out var value)) { list.Add(GetTierLabel(val) + ": " + GetPickupDisplayName(value)); } } if (Plugin.EnableLunar.Value && SelectedPickups.TryGetValue((ItemTier)3, out var value2)) { list.Add("Lunar: " + GetPickupDisplayName(value2)); } if (Plugin.EnableVoid.Value) { AppendVoidLine(list, (ItemTier)6, "Void (Common)"); AppendVoidLine(list, (ItemTier)7, "Void (Uncommon)"); AppendVoidLine(list, (ItemTier)8, "Void (Legendary)"); AppendVoidLine(list, (ItemTier)9, "Void (Boss)"); } return string.Join("\n", list); } private static void AppendVoidLine(List<string> lines, ItemTier tier, string label) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) if (SelectedPickups.TryGetValue(tier, out var value)) { lines.Add(label + ": " + GetPickupDisplayName(value)); } } private static string GetTierLabel(ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected I4, but got Unknown if (1 == 0) { } string result = (int)tier switch { 0 => "Common", 1 => "Uncommon", 2 => "Legendary", 4 => "Boss", _ => ((object)(ItemTier)(ref tier)).ToString(), }; if (1 == 0) { } return result; } private static string GetPickupDisplayName(PickupIndex pickupIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Invalid comparison between Unknown and I4 //IL_0081: Unknown result type (might be due to invalid IL or missing references) PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); if (pickupDef == null) { return ((object)(PickupIndex)(ref pickupIndex)).ToString(); } if (!string.IsNullOrWhiteSpace(pickupDef.nameToken)) { string @string = Language.GetString(pickupDef.nameToken); if (!string.IsNullOrWhiteSpace(@string) && @string != pickupDef.nameToken) { return @string; } } if ((int)pickupDef.itemIndex != -1) { ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); if ((Object)(object)itemDef != (Object)null) { string string2 = Language.GetString(itemDef.nameToken); if (!string.IsNullOrWhiteSpace(string2) && string2 != itemDef.nameToken) { return string2; } } } return pickupDef.internalName ?? ((object)(PickupIndex)(ref pickupIndex)).ToString(); } static OrderRunState() { ItemTier[] array = new ItemTier[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); SupportedTiers = (ItemTier[])(object)array; SelectedPickups = new Dictionary<ItemTier, PickupIndex>(); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.spencersmerdon.artifactoforder", "Artifact of Order", "1.0.0")] public sealed class Plugin : BaseUnityPlugin { public const string PluginGuid = "com.spencersmerdon.artifactoforder"; public const string PluginName = "Artifact of Order"; public const string PluginVersion = "1.0.0"; internal static Plugin Instance { get; private set; } internal static ManualLogSource LogSource => ((BaseUnityPlugin)Instance).Logger; internal static ConfigEntry<bool> EnableLunar { get; private set; } internal static ConfigEntry<bool> EnableVoid { get; private set; } internal static ConfigEntry<int> ItemsPerTier { get; private set; } internal static ConfigEntry<bool> UseSeededRng { get; private set; } private void Awake() { Instance = this; BindConfig(); OrderArtifact.Register(); OrderHooks.Register(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Artifact of Order initialized."); } private void BindConfig() { EnableLunar = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableLunar", false, "Include Lunar items in the Artifact of Order pool."); EnableVoid = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableVoid", true, "Include Void items in the Artifact of Order pool."); ItemsPerTier = ((BaseUnityPlugin)this).Config.Bind<int>("General", "ItemsPerTier", 1, "How many items are selected per tier. Current implementation supports 1 and will clamp higher values."); UseSeededRng = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "UseSeededRNG", true, "Use the run seed for deterministic Artifact of Order selections."); } } internal static class OrderArtifact { internal static ArtifactDef ArtifactDef { get; private set; } internal static void Register() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) LanguageAPI.Add("ARTIFACT_OF_ORDER_NAME", "Artifact of Order"); LanguageAPI.Add("ARTIFACT_OF_ORDER_DESCRIPTION", "Only one item of each tier exists. Order governs all drops."); ArtifactDef = ScriptableObject.CreateInstance<ArtifactDef>(); ArtifactDef.cachedName = "ARTIFACT_OF_ORDER"; ArtifactDef.nameToken = "ARTIFACT_OF_ORDER_NAME"; ArtifactDef.descriptionToken = "ARTIFACT_OF_ORDER_DESCRIPTION"; ArtifactDef.smallIconSelectedSprite = CreateIconSprite(Color32.op_Implicit(new Color32((byte)193, (byte)164, (byte)98, byte.MaxValue)), Color32.op_Implicit(new Color32((byte)66, (byte)52, (byte)28, byte.MaxValue))); ArtifactDef.smallIconDeselectedSprite = CreateIconSprite(Color32.op_Implicit(new Color32((byte)92, (byte)92, (byte)92, byte.MaxValue)), Color32.op_Implicit(new Color32((byte)38, (byte)38, (byte)38, byte.MaxValue))); ContentAddition.AddArtifactDef(ArtifactDef); try { ArtifactCodeAPI.AddCode(ArtifactDef, 0uL, 1uL, 2uL, 3uL); } catch (Exception ex) { Plugin.LogSource.LogWarning((object)("Artifact code registration failed; artifact will still be selectable from the lobby. " + ex.Message)); } } private static Sprite CreateIconSprite(Color borderColor, Color fillColor) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0115: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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) Texture2D val = new Texture2D(128, 128, (TextureFormat)4, false) { filterMode = (FilterMode)0, wrapMode = (TextureWrapMode)1 }; Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(63.5f, 63.5f); Color[] array = (Color[])(object)new Color[16384]; for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { float num = Mathf.Abs((float)j - val2.x); float num2 = Mathf.Abs((float)i - val2.y); float num3 = num + num2; bool flag = num3 <= 34f; bool flag2 = num3 > 34f && num3 <= 48f; array[i * 128 + j] = (flag2 ? borderColor : (flag ? fillColor : Color.clear)); } } val.SetPixels(array); val.Apply(false, true); return Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f)); } } }