Decompiled source of Impossible pack 2 v1.1.6 (2024)

  • Details
  • Versions
  • Changelog
  • Wiki
  • Source

Decompiled source of Impossible pack 2 v1.1.6

amogus_lovers-StandaloneAncientScepter/AncientScepter.dll

Decompiled 6 days ago

Download (260.8KB)

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.Collections.ObjectModel;using System.Diagnostics;using System.IO;using System.Linq;using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.Versioning;using System.Security;using System.Security.Permissions;using AncientScepter.ScepterSkillsMonster;using BepInEx;using BepInEx.Bootstrap;using BepInEx.Configuration;using BepInEx.Logging;using BetterUI;using BtpTweak;using BtpTweak.Messages;using BtpTweak.Utils;using EntityStates;using EntityStates.Bandit2.Weapon;using EntityStates.Captain.Weapon;using EntityStates.Commando.CommandoWeapon;using EntityStates.Huntress;using EntityStates.Huntress.Weapon;using EntityStates.Loader;using EntityStates.Mage;using EntityStates.Mage.Weapon;using EntityStates.Merc;using EntityStates.Merc.Weapon;using EntityStates.Railgunner.Backpack;using EntityStates.Railgunner.Weapon;using EntityStates.TitanMonster;using EntityStates.Toolbot;using EntityStates.Treebot.TreebotFlower;using EntityStates.VoidSurvivor.CorruptMode;using EntityStates.VoidSurvivor.Weapon;using EntityStates.Vulture.Weapon;using FRCSharp;using HG.GeneralSerializer;using HG.Reflection;using IL.EntityStates.Captain.Weapon;using IL.EntityStates.Loader;using IL.EntityStates.Mage.Weapon;using IL.EntityStates.Merc;using Microsoft.CodeAnalysis;using Mono.Cecil.Cil;using MonoMod.Cil;using On.EntityStates;using On.EntityStates.Bandit2.Weapon;using On.EntityStates.Captain.Weapon;using On.EntityStates.Commando.CommandoWeapon;using On.EntityStates.Huntress;using On.EntityStates.Huntress.Weapon;using On.EntityStates.Loader;using On.EntityStates.Mage;using On.EntityStates.Mage.Weapon;using On.EntityStates.Merc;using On.EntityStates.Merc.Weapon;using On.EntityStates.Railgunner.Backpack;using On.EntityStates.Railgunner.Weapon;using On.EntityStates.TitanMonster;using On.EntityStates.Toolbot;using On.EntityStates.Treebot.TreebotFlower;using On.EntityStates.VoidSurvivor.CorruptMode;using On.EntityStates.VoidSurvivor.Weapon;using On.EntityStates.Vulture.Weapon;using On.RoR2;using On.RoR2.Orbs;using On.RoR2.UI.MainMenu;using R2API;using R2API.Networking;using RoR2;using RoR2.Orbs;using RoR2.Projectile;using RoR2.Skills;using RoR2.UI.MainMenu;using TILER2;using ThinkInvisible.ClassicItems;using UnityEngine;using UnityEngine.AddressableAssets;using UnityEngine.Networking;using UnityEngine.Rendering;[assembly: CompilationRelaxations(8)][assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)][assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)][assembly: OptIn][assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")][assembly: AssemblyCompany("AncientScepter")][assembly: AssemblyConfiguration("Release")][assembly: AssemblyFileVersion("1.0.0.0")][assembly: AssemblyInformationalVersion("1.0.0+0df824f51a0626c394a2ac586a0dfb9453077aa9")][assembly: AssemblyProduct("AncientScepter")][assembly: AssemblyTitle("AncientScepter")][assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)][assembly: AssemblyVersion("1.0.0.0")][module: RefSafetyRules(11)][module: UnverifiableCode]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 AncientScepter{public class AncientScepterItem : ItemBase<AncientScepterItem>{public enum StridesInteractionMode{HeresyTakesPrecedence,ScepterTakesPrecedence,ScepterRerolls}private class ScepterReplacer{public SkillDef upgradeDef;public string bodyName;public SkillSlot slotIndex;public SkillDef targetDef;public int variantIndex;}public static bool altModel;public static bool artiFlamePerformanceMode;public static bool captainNukeFriendlyFire;public static bool enableMonsterSkills;public static bool enableSOTVTransforms;public static bool removeClassicItemsScepterFromPool;public static bool turretBlacklist;public static GameObject ancientWispPrefab;public static Material purpleFireMaterial;public static StridesInteractionMode stridesInteractionMode;internal List<ScepterSkill> skills = new List<ScepterSkill>();private readonly Dictionary<SkillSlot, SkillDef> heresyDefs = new Dictionary<SkillSlot, SkillDef>();private readonly List<ScepterReplacer> scepterReplacers = new List<ScepterReplacer>();private GameObject _itemDisplay;private GameObject _itemModel;private bool handlingInventory;private bool handlingOverride;public override GameObject ItemDisplayPrefab{get{if (!Object.op_Implicit((Object)(object)_itemDisplay)){return _itemDisplay = Assets.mainAssetBundle.LoadAsset<GameObject>("mdl" + AssetName + "Display");}return _itemDisplay;}}public override string ItemFullDescription => StringExtension.ToRainbowWavy("原始力量:来自原始传送器。") + "\n升级你的<style=cIsUtility>技能</style>。使特殊技能冷却时间减少" + StringExtension.ToUtil((object)StringExtension.ToBaseAndStkPct<float>(0.25f, "(每层+_)")) + "。";public override Sprite ItemIcon => Assets.mainAssetBundle.LoadAsset<Sprite>("tex" + AssetName + "Icon");public override string ItemLangTokenName => "ANCIENT_SCEPTER";public override string ItemLore => "Perfected energies. <He> holds it before us. The crystal of foreign elements is not attached physically, yet it does not falter from the staff's structure.\n\nOverwhelming strength. We watch as <His> might splits the ground asunder with a single strike.\n\nWondrous possibilities. <His> knowledge unlocks further pathways of development. We are enlightened by <Him>.\n\nExcellent results. From <His> hands, [Nanga] takes hold. It is as <He> said: The weak are culled.\n\nRisking everything. The crystal destabilizies. [Nanga] is gone, and <He> is forced to wield it once again.\n\nPower comes at a cost. <He> is willing to pay.";public override GameObject ItemModel{get{if (!Object.op_Implicit((Object)(object)_itemModel)){return _itemModel = Assets.mainAssetBundle.LoadAsset<GameObject>("mdl" + AssetName + "Pickup");}return _itemModel;}}public override string ItemName => "Ancient Scepter";public override string ItemPickupDesc => "升级你的<style=cIsUtility>技能</style>。";public override ItemTag[] ItemTags{get{ItemTag[] array = new ItemTag[5];RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);array[0] = (ItemTag)(AIBlacklisted ? 4 : 0);return (ItemTag[])(object)array;}}public override ItemTier Tier => (ItemTier)2;public override bool TILER2_MimicBlacklisted => true;private string AssetName{get{if (!altModel){return "AncientScepter";}return "AghanimScepter";}}public AncientScepterItem(){skills.Add(new ArtificerFlamethrower2());skills.Add(new ArtificerFlyUp2());skills.Add(new Bandit2ResetRevolver2());skills.Add(new Bandit2SkullRevolver2());skills.Add(new CaptainAirstrike2());skills.Add(new CaptainAirstrikeAlt2());skills.Add(new CommandoBarrage2());skills.Add(new CommandoGrenade2());skills.Add(new CrocoDisease2());skills.Add(new EngiTurret2());skills.Add(new EngiWalker2());skills.Add(new HuntressBallista2());skills.Add(new HuntressRain2());skills.Add(new LoaderChargeFist2());skills.Add(new LoaderChargeZapFist2());skills.Add(new MercEvis2());skills.Add(new MercEvisProjectile2());skills.Add(new ToolbotDash2());skills.Add(new TreebotFlower2_2());skills.Add(new TreebotFireFruitSeed2());skills.Add(new RailgunnerSuper2());skills.Add(new RailgunnerCryo2());skills.Add(new VoidFiendCrush());if (enableMonsterSkills){skills.Add(new AurelioniteEyeLaser2());skills.Add(new VultureWindblade2());}}public override void CreateConfig(ConfigFile config){string text = "Item: " + ItemName;turretBlacklist = config.Bind<bool>("Engineer", "Blacklist Turrets", false, "If true, turrets will be blacklisted from getting the Ancient Scepter.\nIf false, they will get the scepter and will get rerolled depending on the reroll mode.").Value;artiFlamePerformanceMode = config.Bind<bool>("Artificer", "ArtiFlamePerformance", false, "If true, Dragon's Breath will use significantly lighter particle effects and no dynamic lighting.").Value;captainNukeFriendlyFire = config.Bind<bool>("Captain", "Captain Nuke Friendly Fire", false, "If true, then Captain's Scepter Nuke will also inflict blight on allies.").Value;stridesInteractionMode = config.Bind<StridesInteractionMode>(text, "Strides pickup mode", StridesInteractionMode.ScepterRerolls, "Changes what happens when a character whose skill is affected by Ancient Scepter has both Ancient Scepter and the corresponding heretic skill replacements (Visions/Hooks/Strides/Essence) at the same time.").Value;enableMonsterSkills = config.Bind<bool>(text, "Enable skills for monsters", true, "If true, certain monsters get the effects of the Ancient Scepter.").Value;altModel = config.Bind<bool>(text, "Alt Model", false, "Changes the model as a reference to a certain other scepter that upgrades abilities.").Value;removeClassicItemsScepterFromPool = config.Bind<bool>(text, "CLASSICITEMS: Remove Classic Items Ancient Scepter From Droplist If Installed", true, "If true, then the Ancient Scepter from Classic Items will be removed from the drop pool to prevent complications.").Value;if (Chainloader.PluginInfos.ContainsKey("com.ThinkInvisible.ClassicItems") && removeClassicItemsScepterFromPool){Run.onRunStartGlobal += RemoveClassicItemsScepter;}enableSOTVTransforms = config.Bind<bool>(text, "Transformation Notification", true, "If true, then when scepters are re-rolled, then it will be accompanied by a transformation notification like other items.").Value;}public override ItemDisplayRuleDict CreateDisplayRules(){//IL_0063: Unknown result type (might be due to invalid IL or missing references)//IL_006c: Unknown result type (might be due to invalid IL or missing references)//IL_009b: Unknown result type (might be due to invalid IL or missing references)//IL_00a0: Unknown result type (might be due to invalid IL or missing references)//IL_00b6: 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_00d1: Unknown result type (might be due to invalid IL or missing references)//IL_00d6: Unknown result type (might be due to invalid IL or missing references)//IL_00db: Unknown result type (might be due to invalid IL or missing references)//IL_00dc: Unknown result type (might be due to invalid IL or missing references)//IL_00e1: Unknown result type (might be due to invalid IL or missing references)//IL_00e7: Expected O, but got Unknown//IL_00f7: Unknown result type (might be due to invalid IL or missing references)//IL_0100: Unknown result type (might be due to invalid IL or missing references)//IL_012f: Unknown result type (might be due to invalid IL or missing references)//IL_0134: Unknown result type (might be due to invalid IL or missing references)//IL_014a: 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_0165: Unknown result type (might be due to invalid IL or missing references)//IL_016a: 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_0170: Unknown result type (might be due to invalid IL or missing references)//IL_018a: Unknown result type (might be due to invalid IL or missing references)//IL_0193: Unknown result type (might be due to invalid IL or missing references)//IL_01c2: 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_01dd: Unknown result type (might be due to invalid IL or missing references)//IL_01e2: Unknown result type (might be due to invalid IL or missing references)//IL_01f8: Unknown result type (might be due to invalid IL or missing references)//IL_01fd: Unknown result type (might be due to invalid IL or missing references)//IL_0202: 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_021d: Unknown result type (might be due to invalid IL or missing references)//IL_0226: Unknown result type (might be due to invalid IL or missing references)//IL_0255: Unknown result type (might be due to invalid IL or missing references)//IL_025a: Unknown result type (might be due to invalid IL or missing references)//IL_0270: 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_028b: 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_0295: Unknown result type (might be due to invalid IL or missing references)//IL_0296: Unknown result type (might be due to invalid IL or missing references)//IL_02b0: Unknown result type (might be due to invalid IL or missing references)//IL_02b9: Unknown result type (might be due to invalid IL or missing references)//IL_02e8: Unknown result type (might be due to invalid IL or missing references)//IL_02ed: Unknown result type (might be due to invalid IL or missing references)//IL_0303: Unknown result type (might be due to invalid IL or missing references)//IL_0308: Unknown result type (might be due to invalid IL or missing references)//IL_031e: 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_0329: 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_034c: Unknown result type (might be due to invalid IL or missing references)//IL_037b: 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_0396: Unknown result type (might be due to invalid IL or missing references)//IL_039b: Unknown result type (might be due to invalid IL or missing references)//IL_03b1: Unknown result type (might be due to invalid IL or missing references)//IL_03b6: 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_03bc: Unknown result type (might be due to invalid IL or missing references)//IL_03d6: 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_040e: Unknown result type (might be due to invalid IL or missing references)//IL_0413: Unknown result type (might be due to invalid IL or missing references)//IL_0429: Unknown result type (might be due to invalid IL or missing references)//IL_042e: Unknown result type (might be due to invalid IL or missing references)//IL_0444: Unknown result type (might be due to invalid IL or missing references)//IL_0449: Unknown result type (might be due to invalid IL or missing references)//IL_044e: Unknown result type (might be due to invalid IL or missing references)//IL_044f: Unknown result type (might be due to invalid IL or missing references)//IL_0469: Unknown result type (might be due to invalid IL or missing references)//IL_0472: Unknown result type (might be due to invalid IL or missing references)//IL_04a1: Unknown result type (might be due to invalid IL or missing references)//IL_04a6: Unknown result type (might be due to invalid IL or missing references)//IL_04bc: Unknown result type (might be due to invalid IL or missing references)//IL_04c1: Unknown result type (might be due to invalid IL or missing references)//IL_04d7: Unknown result type (might be due to invalid IL or missing references)//IL_04dc: Unknown result type (might be due to invalid IL or missing references)//IL_04e1: Unknown result type (might be due to invalid IL or missing references)//IL_04e2: Unknown result type (might be due to invalid IL or missing references)//IL_04fc: Unknown result type (might be due to invalid IL or missing references)//IL_0505: Unknown result type (might be due to invalid IL or missing references)//IL_0534: Unknown result type (might be due to invalid IL or missing references)//IL_0539: 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_0554: Unknown result type (might be due to invalid IL or missing references)//IL_056a: Unknown result type (might be due to invalid IL or missing references)//IL_056f: Unknown result type (might be due to invalid IL or missing references)//IL_0574: 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_058f: Unknown result type (might be due to invalid IL or missing references)//IL_0598: Unknown result type (might be due to invalid IL or missing references)//IL_05c7: Unknown result type (might be due to invalid IL or missing references)//IL_05cc: Unknown result type (might be due to invalid IL or missing references)//IL_05e2: Unknown result type (might be due to invalid IL or missing references)//IL_05e7: Unknown result type (might be due to invalid IL or missing references)//IL_05fd: Unknown result type (might be due to invalid IL or missing references)//IL_0602: Unknown result type (might be due to invalid IL or missing references)//IL_0607: Unknown result type (might be due to invalid IL or missing references)//IL_0608: Unknown result type (might be due to invalid IL or missing references)//IL_0622: Unknown result type (might be due to invalid IL or missing references)//IL_062b: Unknown result type (might be due to invalid IL or missing references)//IL_065a: Unknown result type (might be due to invalid IL or missing references)//IL_065f: Unknown result type (might be due to invalid IL or missing references)//IL_0675: Unknown result type (might be due to invalid IL or missing references)//IL_067a: Unknown result type (might be due to invalid IL or missing references)//IL_0690: Unknown result type (might be due to invalid IL or missing references)//IL_0695: Unknown result type (might be due to invalid IL or missing references)//IL_069a: Unknown result type (might be due to invalid IL or missing references)//IL_069b: Unknown result type (might be due to invalid IL or missing references)//IL_06cd: Unknown result type (might be due to invalid IL or missing references)//IL_06e1: Unknown result type (might be due to invalid IL or missing references)//IL_06f5: Unknown result type (might be due to invalid IL or missing references)//IL_06fa: Unknown result type (might be due to invalid IL or missing references)//IL_06ff: Unknown result type (might be due to invalid IL or missing references)//IL_0731: Unknown result type (might be due to invalid IL or missing references)//IL_0745: Unknown result type (might be due to invalid IL or missing references)//IL_0759: Unknown result type (might be due to invalid IL or missing references)//IL_075e: Unknown result type (might be due to invalid IL or missing references)//IL_0763: Unknown result type (might be due to invalid IL or missing references)//IL_077d: Unknown result type (might be due to invalid IL or missing references)//IL_07ad: Unknown result type (might be due to invalid IL or missing references)//IL_07b2: Unknown result type (might be due to invalid IL or missing references)//IL_07c8: Unknown result type (might be due to invalid IL or missing references)//IL_07cd: Unknown result type (might be due to invalid IL or missing references)//IL_07e3: Unknown result type (might be due to invalid IL or missing references)//IL_07e8: Unknown result type (might be due to invalid IL or missing references)//IL_07ed: Unknown result type (might be due to invalid IL or missing references)//IL_07ee: Unknown result type (might be due to invalid IL or missing references)//IL_0808: Unknown result type (might be due to invalid IL or missing references)//IL_0838: Unknown result type (might be due to invalid IL or missing references)//IL_083d: Unknown result type (might be due to invalid IL or missing references)//IL_0853: Unknown result type (might be due to invalid IL or missing references)//IL_0858: Unknown result type (might be due to invalid IL or missing references)//IL_086e: Unknown result type (might be due to invalid IL or missing references)//IL_0873: Unknown result type (might be due to invalid IL or missing references)//IL_0878: Unknown result type (might be due to invalid IL or missing references)//IL_0879: Unknown result type (might be due to invalid IL or missing references)//IL_0893: Unknown result type (might be due to invalid IL or missing references)//IL_08c3: Unknown result type (might be due to invalid IL or missing references)//IL_08c8: Unknown result type (might be due to invalid IL or missing references)//IL_08de: Unknown result type (might be due to invalid IL or missing references)//IL_08e3: Unknown result type (might be due to invalid IL or missing references)//IL_08f9: Unknown result type (might be due to invalid IL or missing references)//IL_08fe: Unknown result type (might be due to invalid IL or missing references)//IL_0903: Unknown result type (might be due to invalid IL or missing references)//IL_0904: Unknown result type (might be due to invalid IL or missing references)//IL_091e: Unknown result type (might be due to invalid IL or missing references)//IL_094e: Unknown result type (might be due to invalid IL or missing references)//IL_0953: Unknown result type (might be due to invalid IL or missing references)//IL_0969: Unknown result type (might be due to invalid IL or missing references)//IL_096e: Unknown result type (might be due to invalid IL or missing references)//IL_0984: Unknown result type (might be due to invalid IL or missing references)//IL_0989: Unknown result type (might be due to invalid IL or missing references)//IL_098e: Unknown result type (might be due to invalid IL or missing references)//IL_098f: Unknown result type (might be due to invalid IL or missing references)//IL_09a9: Unknown result type (might be due to invalid IL or missing references)//IL_09d9: Unknown result type (might be due to invalid IL or missing references)//IL_09de: Unknown result type (might be due to invalid IL or missing references)//IL_09f4: Unknown result type (might be due to invalid IL or missing references)//IL_09f9: Unknown result type (might be due to invalid IL or missing references)//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)//IL_0a14: Unknown result type (might be due to invalid IL or missing references)//IL_0a19: Unknown result type (might be due to invalid IL or missing references)//IL_0a1a: Unknown result type (might be due to invalid IL or missing references)SetupMaterials(ItemModel);ItemModel.AddComponent<ItemDisplay>().rendererInfos = Assets.SetupRendererInfos(ItemModel);ItemBase.displayPrefab = ItemDisplayPrefab;SetupMaterials(ItemDisplayPrefab);ItemDisplayPrefab.AddComponent<ItemDisplay>().rendererInfos = Assets.SetupRendererInfos(ItemDisplayPrefab);ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Pelvis",localPos = new Vector3(0.1473f, -0.073f, -0.0935f),localAngles = new Vector3(333.2843f, 198.8161f, 165.1177f),localScale = new Vector3(0.2235f, 0.2235f, 0.2235f)}});val.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Pelvis",localPos = new Vector3(0f, 0.0638f, 0.0973f),localAngles = new Vector3(76.6907f, 0f, 0f),localScale = new Vector3(0.2812f, 0.2812f, 0.2812f)}});val.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "HandR",localPos = new Vector3(-0.0021f, 0.1183f, 0.063f),localAngles = new Vector3(0f, 34.1f, 90f),localScale = new Vector3(0.4416f, 0.4416f, 0.4416f)}});val.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "CannonHeadR",localPos = new Vector3(0.0186f, 0.3435f, 0.2246f),localAngles = new Vector3(0f, 0f, 0f),localScale = new Vector3(0.5614f, 0.5614f, 0.5614f)}});val.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Pelvis",localPos = new Vector3(0.1712f, 0f, 0f),localAngles = new Vector3(69.8111f, 180f, 180f),localScale = new Vector3(0.2679f, 0.2679f, 0.2679f)}});val.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "MechLowerArmR",localPos = new Vector3(0.0813f, 0.4165f, -0.0212f),localAngles = new Vector3(0f, 180f, 180f),localScale = new Vector3(0.4063f, 0.4063f, 0.4063f)}});val.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Chest",localPos = new Vector3(-0.0046f, 0.0099f, -0.286f),localAngles = new Vector3(10.4706f, 1.6895f, 24.8468f),localScale = new Vector3(0.4928f, 0.4928f, 0.4928f)}});val.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Chest",localPos = new Vector3(1.1191f, 0.358f, -1.6717f),localAngles = new Vector3(0f, 0f, 270f),localScale = new Vector3(2.4696f, 2.4696f, 2.4696f)}});val.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "CalfFrontL",localPos = new Vector3(0f, 0.8376f, -0.1766f),localAngles = new Vector3(0f, 0f, 0f),localScale = new Vector3(0.8037f, 0.8037f, 0.8037f)}});val.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "MouthMuzzle",localPos = new Vector3(0f, 2.1215f, 2.9939f),localAngles = new Vector3(0f, 0f, 270f),localScale = new Vector3(5.2969f, 5.2969f, 5.2969f)}});val.Add("mdlBandit", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{ruleType = (ItemDisplayRuleType)0,followerPrefab = ItemDisplayPrefab,childName = "Pelvis",localPos = new Vector3(-0.1152f, -0.1278f, 0.2056f),localAngles = new Vector3(20f, 285f, 10f),localScale = new Vector3(0.2235f, 0.2235f, 0.2235f)}});val.Add("mdlEnforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1] { ItemHelpers.CreateDisplayRule(ItemDisplayPrefab, "Pelvis", new Vector3(-0.08448f, 0.00357f, -0.35566f), new Vector3(43.57039f, 347.6845f, 69.64303f), new Vector3(0.31291f, 0.31291f, 0.31291f)) });val.Add("mdlNemforcer", (ItemDisplayRule[])(object)new ItemDisplayRule[1] { ItemHelpers.CreateDisplayRule(ItemDisplayPrefab, "Minigun", new Vector3(0.00287f, -0.00305f, -0.03029f), new Vector3(358.9499f, 89.5545f, 180.8908f), new Vector3(0.00837f, 0.00837f, 0.00837f)) });val.Add("mdlVoidSurvivor", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{childName = "Hand",followerPrefab = ItemDisplayPrefab,localPos = new Vector3(-0.02335f, 0.11837f, 0.11306f),localAngles = new Vector3(55.42191f, 299.1461f, 266.1845f),localScale = new Vector3(0.56092f, 0.56276f, 0.56092f)}});val.Add("mdlRailGunner", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{childName = "ThighR",followerPrefab = ItemDisplayPrefab,localPos = new Vector3(-0.11836f, 0.17205f, 0.0282f),localAngles = new Vector3(353.4687f, 184.4017f, 177.4758f),localScale = new Vector3(0.2235f, 0.2235f, 0.2235f)}});val.Add("mdlNemmando", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{childName = "Sword",followerPrefab = ItemDisplayPrefab,localPos = new Vector3(-5.576489E-05f, 0.001674413f, -2.617424E-05f),localAngles = new Vector3(1.114511f, 204.2958f, 177.8329f),localScale = new Vector3(0.0026f, 0.0026f, 0.0026f)}});val.Add("mdlHeretic", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{childName = "ThighL",followerPrefab = ItemDisplayPrefab,localPos = new Vector3(0.49264f, -0.16267f, -0.14486f),localAngles = new Vector3(9.97009f, 351.3801f, 100.2498f),localScale = new Vector3(0.5f, 0.5f, 0.5f)}});val.Add("mdlBrother", (ItemDisplayRule[])(object)new ItemDisplayRule[1]{new ItemDisplayRule{childName = "HandL",followerPrefab = ItemDisplayPrefab,localPos = new Vector3(-0.05066f, 0.13436f, 0.0282f),localAngles = new Vector3(79.95749f, 180f, 230.595f),localScale = new Vector3(0.4f, 0.4f, 0.4f)}});return val;}public override void Hooks(){//IL_001e: Unknown result type (might be due to invalid IL or missing references)//IL_0028: Expected O, but got Unknown//IL_002f: Unknown result type (might be due to invalid IL or missing references)//IL_0039: Expected O, but got Unknown//IL_0040: Unknown result type (might be due to invalid IL or missing references)//IL_004a: Expected O, but got Unknown//IL_0051: Unknown result type (might be due to invalid IL or missing references)//IL_005b: Expected O, but got Unknownbase.Hooks();CharacterBody.onBodyInventoryChangedGlobal += On_CBInventoryChangedGlobal;CharacterMaster.GetDeployableSameSlotLimit += new hook_GetDeployableSameSlotLimit(On_CMGetDeployableSameSlotLimit);GenericSkill.SetSkillOverride += new hook_SetSkillOverride(On_GSSetSkillOverride);MainMenuController.Start += new hook_Start(MainMenuController_Start);RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);Run.onRunStartGlobal += On_RunStartGlobal_UseOnce;TeleporterInteraction.onTeleporterChargedGlobal += TeleporterInteraction_onTeleporterChargedGlobal;}public override void Init(ConfigFile config){ancientWispPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/AncientWispBody");CreateConfig(config);CreateItem();CreateLang();Hooks();RegisterScepterSkills();}public void InstallSkills(){skills.ForEach(delegate(ScepterSkill s){s.LoadBehavior();});MiscUtil.AliveList().ForEach(delegate(CharacterMaster master){CharacterBody body = master.GetBody();if (Object.op_Implicit((Object)(object)body)){HandleScepterSkill(body);}});}public void InstallSkillsLanguage(){skills.ForEach(delegate(ScepterSkill skill){if (!Utility.IsNullOrWhiteSpace(skill.oldDescToken)){languageOverlays.Add(LanguageAPI.AddOverlay(skill.newDescToken, Language.GetString(skill.oldDescToken) + skill.scepterSkillDesc));}});}public bool RegisterScepterSkill(SkillDef replacingDef, string targetBodyName, SkillSlot targetSlot, int targetVariant){//IL_000e: Unknown result type (might be due to invalid IL or missing references)//IL_000f: Unknown result type (might be due to invalid IL or missing references)//IL_010b: Unknown result type (might be due to invalid IL or missing references)//IL_0110: Unknown result type (might be due to invalid IL or missing references)if (targetVariant < 0){AncientScepterMain._logger.LogError((object)"Can't register a scepter skill to negative variant index");return false;}ScepterReplacer scepterReplacer = scepterReplacers.FirstOrDefault((ScepterReplacer x) => x.bodyName == targetBodyName && x.slotIndex == targetSlot && x.variantIndex == targetVariant);if (scepterReplacer != null){AncientScepterMain._logger.LogMessage((object)("Replacing scepter skill for \"" + targetBodyName + "\" (" + scepterReplacer.upgradeDef.skillName + ") with (" + replacingDef.skillName + ")"));scepterReplacers.Remove(scepterReplacer);}AncientScepterMain._logger.LogMessage((object)("Adding scepter skill for \"" + targetBodyName + "\" (" + replacingDef.skillName + ")"));scepterReplacers.Add(new ScepterReplacer{bodyName = targetBodyName,slotIndex = targetSlot,variantIndex = targetVariant,upgradeDef = replacingDef});return true;}public bool RegisterScepterSkill(SkillDef replacingDef, string targetBodyName, SkillDef targetDef){//IL_00e9: Unknown result type (might be due to invalid IL or missing references)ScepterReplacer scepterReplacer = scepterReplacers.FirstOrDefault((ScepterReplacer x) => x.bodyName == targetBodyName && (Object)(object)x.targetDef == (Object)(object)targetDef);if (scepterReplacer != null){AncientScepterMain._logger.LogMessage((object)("Replacing scepter skill for \"" + targetBodyName + "\" (" + scepterReplacer.upgradeDef.skillName + ") with (" + replacingDef.skillName + ")"));scepterReplacers.Remove(scepterReplacer);}AncientScepterMain._logger.LogMessage((object)("Adding scepter skill for \"" + targetBodyName + "\" (" + replacingDef.skillName + ")"));scepterReplacers.Add(new ScepterReplacer{bodyName = targetBodyName,slotIndex = (SkillSlot)(-1),variantIndex = -1,upgradeDef = replacingDef,targetDef = targetDef});return true;}public void RegisterScepterSkills(){//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)skills.ForEach(delegate(ScepterSkill skill){//IL_0014: Unknown result type (might be due to invalid IL or missing references)skill.SetupAttributes();RegisterScepterSkill(skill.scepterSkillDef, skill.targetBody, skill.targetSlot, skill.targetVariantIndex);});HereticNevermore2 hereticNevermore = new HereticNevermore2();hereticNevermore.SetupAttributes();skills.Add(hereticNevermore);RegisterScepterSkill(hereticNevermore.scepterSkillDef, hereticNevermore.targetBody, Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Heretic/HereticDefaultAbility.asset").WaitForCompletion());InstallSkills();}protected override void SetupMaterials(GameObject modelPrefab){//IL_003e: Unknown result type (might be due to invalid IL or missing references)purpleFireMaterial = ((Renderer)((Component)ancientWispPrefab.transform.Find("Model Base?/mdlAncientWisp/AncientWispArmature/chest/Fire, Main")).GetComponent<ParticleSystemRenderer>()).material;modelPrefab.GetComponentInChildren<Renderer>().material = Assets.CreateMaterial("mat" + AssetName, 1f, Color.white, 1f);ParticleSystemRenderer[] componentsInChildren = modelPrefab.GetComponentsInChildren<ParticleSystemRenderer>();for (int i = 0; i < componentsInChildren.Length; i++){((Renderer)componentsInChildren[i]).material = purpleFireMaterial;}}[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]private static void RemoveClassicItemsScepter(Run run){//IL_0011: Unknown result type (might be due to invalid IL or missing references)//IL_0017: Invalid comparison between Unknown and I4//IL_0026: Unknown result type (might be due to invalid IL or missing references)ItemDef itemDef = ((Item)Item<Scepter>.instance).itemDef;if (itemDef != null && (int)itemDef.itemIndex > -1){run.DisableItemDrop(((Item)Item<Scepter>.instance).itemDef.itemIndex);}}private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args){//IL_002a: Unknown result type (might be due to invalid IL or missing references)if (Object.op_Implicit((Object)(object)sender.inventory)){args.specialCooldownMultAdd -= 1f - Mathf.Pow(0.75f, (float)sender.inventory.GetItemCount(base.ItemDef.itemIndex));}}private void MainMenuController_Start(orig_Start orig, MainMenuController self){//IL_000e: Unknown result type (might be due to invalid IL or missing references)//IL_0018: Expected O, but got Unknownorig.Invoke(self);MainMenuController.Start -= new hook_Start(MainMenuController_Start);InstallSkillsLanguage();}private void CleanScepter(CharacterBody self, GenericSkill slot = null, bool force = false){//IL_0016: Unknown result type (might be due to invalid IL or missing references)string bodyName = BodyCatalog.GetBodyName(self.bodyIndex);List<ScepterReplacer> source = scepterReplacers.FindAll((ScepterReplacer x) => x.bodyName == bodyName);if (Object.op_Implicit((Object)(object)slot)){if (source.Any((ScepterReplacer r) => (Object)(object)r.upgradeDef == (Object)(object)slot.skillDef && (force || ((Object)(object)slot.baseSkill != (Object)(object)r.targetDef && !slot.skillOverrides.Any((SkillOverride s) => (Object)(object)r.targetDef == (Object)(object)s.skillDef))))){slot.UnsetSkillOverride((object)self, slot.skillDef, (SkillOverridePriority)2);}return;}GenericSkill[] allSkills = self.skillLocator.allSkills;foreach (GenericSkill val in allSkills){if (source.Any((ScepterReplacer r) => (Object)(object)r.upgradeDef == (Object)(object)slot.skillDef && (force || ((Object)(object)slot.baseSkill != (Object)(object)r.targetDef && !slot.skillOverrides.Any((SkillOverride s) => (Object)(object)r.targetDef == (Object)(object)s.skillDef))))){val.UnsetSkillOverride((object)self, val.skillDef, (SkillOverridePriority)2);}}}private bool HandleScepterSkill(CharacterBody self, bool forceOff = false){//IL_0057: Unknown result type (might be due to invalid IL or missing references)//IL_0125: Unknown result type (might be due to invalid IL or missing references)//IL_01bc: Unknown result type (might be due to invalid IL or missing references)//IL_01c2: Invalid comparison between Unknown and I4//IL_03cf: Unknown result type (might be due to invalid IL or missing references)//IL_01e9: Unknown result type (might be due to invalid IL or missing references)//IL_01cb: Unknown result type (might be due to invalid IL or missing references)//IL_03ed: Unknown result type (might be due to invalid IL or missing references)//IL_040a: 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_01ee: Unknown result type (might be due to invalid IL or missing references)//IL_0337: Unknown result type (might be due to invalid IL or missing references)//IL_0354: Unknown result type (might be due to invalid IL or missing references)//IL_021a: Unknown result type (might be due to invalid IL or missing references)//IL_0235: Unknown result type (might be due to invalid IL or missing references)ScepterReplacer replVar;if (Object.op_Implicit((Object)(object)self.skillLocator) && self.master?.loadout != null){string bodyName = BodyCatalog.GetBodyName(self.bodyIndex);List<ScepterReplacer> list = scepterReplacers.FindAll((ScepterReplacer x) => x.bodyName == bodyName);if (list.Count > 0){if (list.Select((ScepterReplacer x) => x.upgradeDef).Intersect(self.skillLocator.allSkills.Select((GenericSkill x) => x.skillDef)).Any() && GetCount(self) > 0){return true;}GenericSkill val = null;SkillSlot val2 = (SkillSlot)(-1);replVar = null;bool flag = false;foreach (ScepterReplacer replacement in list){foreach (GenericSkill item in self.skillLocator.allSkills.Reverse().ToList().FindAll((GenericSkill s) => (Object)(object)s.skillDef == (Object)(object)replacement.targetDef || (Object)(object)s.baseSkill == (Object)(object)replacement.targetDef)){val = item;val2 = (((int)replacement.slotIndex == -1) ? self.skillLocator.FindSkillSlot(val) : replacement.slotIndex);if ((stridesInteractionMode != StridesInteractionMode.ScepterTakesPrecedence || bodyName == "HereticBody") && hasHeresyForSlot(val2) && (Object)(object)replacement.targetDef != (Object)(object)heresyDefs[val2]){flag = true;continue;}replVar = replacement;break;}if (replVar != null && Object.op_Implicit((Object)(object)val) && (Object)(object)replVar.targetDef == (Object)(object)val.skillDef){break;}}if (replVar == null){if (flag){return stridesInteractionMode != StridesInteractionMode.ScepterRerolls;}return false;}bool flag2 = handlingOverride;handlingOverride = true;if (!forceOff && GetCount(self) > 0){if (stridesInteractionMode == StridesInteractionMode.ScepterTakesPrecedence && hasHeresyForSlot(val2)){self.skillLocator.GetSkill(val2).UnsetSkillOverride((object)self, heresyDefs[val2], (SkillOverridePriority)3);}val.SetSkillOverride((object)self, replVar.upgradeDef, (SkillOverridePriority)2);val.onSkillChanged += UnsetOverrideLater;}else{val.UnsetSkillOverride((object)self, replVar.upgradeDef, (SkillOverridePriority)2);if (stridesInteractionMode == StridesInteractionMode.ScepterTakesPrecedence && hasHeresyForSlot(val2)){self.skillLocator.GetSkill(val2).SetSkillOverride((object)self, heresyDefs[val2], (SkillOverridePriority)3);}}handlingOverride = flag2;return true;}}return false;void UnsetOverrideLater(GenericSkill skill){skill.onSkillChanged -= UnsetOverrideLater;skill.UnsetSkillOverride((object)self, replVar.upgradeDef, (SkillOverridePriority)2);}bool hasHeresyForSlot(SkillSlot skillSlot){//IL_0000: Unknown result type (might be due to invalid IL or missing references)//IL_0016: Expected I4, but got Unknownreturn (int)skillSlot switch{0 => self.inventory.GetItemCount(Items.LunarPrimaryReplacement) > 0, 1 => self.inventory.GetItemCount(Items.LunarSecondaryReplacement) > 0, 2 => self.inventory.GetItemCount(Items.LunarUtilityReplacement) > 0, 3 => self.inventory.GetItemCount(Items.LunarSpecialReplacement) > 0, _ => false, };}}private void On_CBInventoryChangedGlobal(CharacterBody body){if (!handlingInventory){handlingInventory = true;HandleScepterSkill(body);handlingInventory = false;}}private int On_CMGetDeployableSameSlotLimit(orig_GetDeployableSameSlotLimit orig, CharacterMaster self, DeployableSlot slot){//IL_0000: Unknown result type (might be due to invalid IL or missing references)//IL_0002: Invalid comparison between Unknown and I4//IL_0036: 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)if ((int)slot == 1){CharacterBody body = self.GetBody();if (Object.op_Implicit((Object)(object)body)){return orig.Invoke(self, slot) + body.skillLocator.special.skillDef.baseMaxStock - 2;}}return orig.Invoke(self, slot);}private void On_GSSetSkillOverride(orig_SetSkillOverride orig, GenericSkill self, object source, SkillDef skillDef, SkillOverridePriority priority){//IL_0005: Unknown result type (might be due to invalid IL or missing references)orig.Invoke(self, source, skillDef, priority);if (!handlingOverride && Object.op_Implicit((Object)(object)self.characterBody)){handlingOverride = true;CleanScepter(self.characterBody, self);HandleScepterSkill(self.characterBody);handlingOverride = false;}}private void On_RunStartGlobal_UseOnce(Run run){//IL_00a4: Unknown result type (might be due to invalid IL or missing references)//IL_00aa: Invalid comparison between Unknown and I4//IL_00b7: 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)heresyDefs.Add((SkillSlot)0, CommonAssets.lunarPrimaryReplacementSkillDef);heresyDefs.Add((SkillSlot)1, CommonAssets.lunarSecondaryReplacementSkillDef);heresyDefs.Add((SkillSlot)2, CommonAssets.lunarUtilityReplacementSkillDef);heresyDefs.Add((SkillSlot)3, CommonAssets.lunarSpecialReplacementSkillDef);foreach (ScepterReplacer item in scepterReplacers.Where((ScepterReplacer x) => (Object)(object)x.targetDef == (Object)null)){GameObject obj = BodyCatalog.FindBodyPrefab(item.bodyName);SkillLocator val = ((obj != null) ? obj.GetComponent<SkillLocator>() : null);if (Object.op_Implicit((Object)(object)val) && (int)item.slotIndex != -1 && item.variantIndex >= 0){Variant[] variants = val.GetSkill(item.slotIndex).skillFamily.variants;if (variants.Length <= item.variantIndex){AncientScepterMain._logger.LogError((object)$"Invalid Scepter Replacement for body:{item.bodyName},slot:{item.slotIndex},with skill:{item.upgradeDef.skillNameToken}");item.targetDef = null;}else{item.targetDef = variants[item.variantIndex].skillDef;}}}Run.onRunStartGlobal -= On_RunStartGlobal_UseOnce;}private void TeleporterInteraction_onTeleporterChargedGlobal(TeleporterInteraction teleporter){//IL_0030: Unknown result type (might be due to invalid IL or missing references)//IL_0035: Unknown result type (might be due to invalid IL or missing references)//IL_003a: Unknown result type (might be due to invalid IL or missing references)//IL_0046: Unknown result type (might be due to invalid IL or missing references)//IL_004b: Unknown result type (might be due to invalid IL or missing references)//IL_0058: Unknown result type (might be due to invalid IL or missing references)//IL_005d: Unknown result type (might be due to invalid IL or missing references)//IL_0062: Unknown result type (might be due to invalid IL or missing references)//IL_006c: Unknown result type (might be due to invalid IL or missing references)//IL_0071: Unknown result type (might be due to invalid IL or missing references)//IL_007b: Unknown result type (might be due to invalid IL or missing references)//IL_0080: Unknown result type (might be due to invalid IL or missing references)//IL_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_0093: Unknown result type (might be due to invalid IL or missing references)//IL_0098: Unknown result type (might be due to invalid IL or missing references)//IL_009d: Unknown result type (might be due to invalid IL or missing references)//IL_00a1: Unknown result type (might be due to invalid IL or missing references)//IL_00a2: Unknown result type (might be due to invalid IL or missing references)//IL_00a3: 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_00ab: Unknown result type (might be due to invalid IL or missing references)//IL_00ac: Unknown result type (might be due to invalid IL or missing references)//IL_00b1: Unknown result type (might be due to invalid IL or missing references)if (NetworkServer.active && ((Object)teleporter).name.StartsWith("LunarTeleporter")){int participatingPlayerCount = Run.instance.participatingPlayerCount;PickupIndex val = PickupCatalog.FindPickupIndex(base.ItemDef.itemIndex);Vector3 position = teleporter.bossGroup.dropPosition.position;Vector3 val2 = Quaternion.AngleAxis((float)Random.Range(0, 360), Vector3.up) * (Vector3.up * 40f + Vector3.forward * 2.5f);Quaternion val3 = Quaternion.AngleAxis(360f / (float)participatingPlayerCount, Vector3.up);while (participatingPlayerCount-- > 0){PickupDropletController.CreatePickupDroplet(val, position, val2);val2 = val3 * val2;}}}}public abstract class ScepterSkill{public abstract SkillDef scepterSkillDef { get; protected set; }public abstract string newDescToken { get; protected set; }public abstract string oldDescToken { get; protected set; }public abstract string scepterSkillDesc { get; }public abstract string targetBody { get; }public abstract SkillSlot targetSlot { get; }public abstract int targetVariantIndex { get; }internal virtual void LoadBehavior(){}internal abstract void SetupAttributes();internal virtual void UnloadBehavior(){}protected bool IsScepterSkill(SkillLocator skillLocator){//IL_000c: Unknown result type (might be due to invalid IL or missing references)if (!Object.op_Implicit((Object)(object)skillLocator)){return false;}GenericSkill skill = skillLocator.GetSkill(targetSlot);if (!Object.op_Implicit((Object)(object)skill)){return false;}return skill.skillDef.skillIndex == scepterSkillDef.skillIndex;}protected bool IsScepterSkill(GenericSkill genericSkill){if (!Object.op_Implicit((Object)(object)genericSkill)){return false;}return genericSkill.skillDef.skillIndex == scepterSkillDef.skillIndex;}}[BepInPlugin("com.DestroyedClone.AncientScepter", "StandaloneAncientScepter", "10.0.1")][BepInDependency("com.bepis.r2api", "5.1.0")][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)]public class AncientScepterMain : BaseUnityPlugin{public const string ModVer = "10.0.1";public const string ModName = "StandaloneAncientScepter";public const string ModGuid = "com.DestroyedClone.AncientScepter";internal static ManualLogSource _logger = null;internal static ConfigFile _config = null;protected readonly List<LanguageOverlay> languageOverlays = new List<LanguageOverlay>();public List<ItemBase> Items = new List<ItemBase>();public static readonly Dictionary<ItemBase, bool> ItemStatusDictionary = new Dictionary<ItemBase, bool>();public static BuffDef perishSongDebuff { get; private set; }private void Awake(){_logger = ((BaseUnityPlugin)this).Logger;_config = ((BaseUnityPlugin)this).Config;ModCompat.Init();CustomDamageTypes.SetupDamageTypes();SetupBuffs();Assets.PopulateAssets();Assets.SpriteAssets.InitializeAssets();foreach (Type item in from type in Assembly.GetExecutingAssembly().GetTypes()where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase))select type){ItemBase itemBase = (ItemBase)Activator.CreateInstance(item);if (ValidateItem(itemBase, Items)){itemBase.Init(((BaseUnityPlugin)this).Config);}}Run.onRunStartGlobal += Run_onRunStartGlobal;}[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]private void doBetterUI(){Buffs.RegisterBuffInfo(perishSongDebuff, "STANDALONEANCIENTSCEPTER_BUFF_PERISHSONG_NAME", "STANDALONEANCIENTSCEPTER_BUFF_PERISHSONG_DESC");LanguageAPI.Add("STANDALONEANCIENTSCEPTER_BUFF_PERISHSONG_NAME", "灭绝之歌");LanguageAPI.Add("STANDALONEANCIENTSCEPTER_BUFF_PERISHSONG_DESC", "死亡时带走所有族人。");}private void SetupBuffs(){//IL_0032: Unknown result type (might be due to invalid IL or missing references)//IL_0037: Unknown result type (might be due to invalid IL or missing references)perishSongDebuff = ScriptableObject.CreateInstance<BuffDef>();((Object)perishSongDebuff).name = "Perish Song";perishSongDebuff.iconSprite = Resources.Load<Sprite>("textures/difficultyicons/texDifficultyHardIcon");perishSongDebuff.buffColor = Color.red;perishSongDebuff.canStack = true;perishSongDebuff.isHidden = false;perishSongDebuff.isDebuff = false;perishSongDebuff.isCooldown = false;if (!ContentAddition.AddBuffDef(perishSongDebuff)){_logger.LogWarning((object)"Buff 'perishSongDebuff' failed to be added.");}if (ModCompat.compatBetterUI){doBetterUI();}}private void Run_onRunStartGlobal(Run run){//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_000c: Expected O, but got Unknown//IL_0017: Unknown result type (might be due to invalid IL or missing references)//IL_0021: Expected O, but got UnknownXoroshiro128Plus val = new Xoroshiro128Plus(run.seed);ItemBase<AncientScepterItem>.instance.rng = new Xoroshiro128Plus(val.nextUlong);}private bool ValidateItem(ItemBase item, List<ItemBase> itemList){item.AIBlacklisted = ((BaseUnityPlugin)this).Config.Bind<bool>("Item: " + item.ItemName, "Blacklist Item from AI Use?", false, "Should the AI not be able to obtain this item?").Value;ItemStatusDictionary.Add(item, ((Behaviour)this).enabled);itemList.Add(item);return ((Behaviour)this).enabled;}}public static class Assets{public static class SpriteAssets{public static Sprite ArtificerFlameThrower2;public static Sprite ArtificerFlyUp2;public static Sprite Bandit2ResetRevolver2;public static Sprite Bandit2SkullRevolver2;public static Sprite CaptainAirstrike2;public static Sprite CaptainAirstrikeAlt2;public static Sprite CommandoBarrage2;public static Sprite CommandoGrenade2;public static Sprite CrocoDisease2;public static Sprite EngiTurret2;public static Sprite EngiWalker2;public static Sprite HereticNevermore2;public static Sprite HuntressBallista2;public static Sprite HuntressRain2;public static Sprite LoaderChargeFist2;public static Sprite LoaderChargeZapFist2;public static Sprite MercEvis2;public static Sprite MercEvis2Projectile;public static Sprite ToolbotDash2;public static Sprite TreebotFireFruitSeed2;public static Sprite TreebotFlower2_2;public static Sprite RailgunnerSupercharge2;public static Sprite RailgunnerFireSupercharge2;public static Sprite RailgunnerCryocharge2;public static Sprite RailgunnerFireCryocharge2;public static Sprite VoidFiendSuppress2;public static Sprite VoidFiendCorruptedSuppress2;public static void InitializeAssets(){ArtificerFlameThrower2 = mainAssetBundle.LoadAsset<Sprite>("texArtiR1");ArtificerFlyUp2 = mainAssetBundle.LoadAsset<Sprite>("texArtiR2");Bandit2ResetRevolver2 = mainAssetBundle.LoadAsset<Sprite>("texBanditR1");Bandit2SkullRevolver2 = mainAssetBundle.LoadAsset<Sprite>("texBanditR2");CaptainAirstrike2 = mainAssetBundle.LoadAsset<Sprite>("texCapU1");CaptainAirstrikeAlt2 = mainAssetBundle.LoadAsset<Sprite>("texCapU2");CommandoBarrage2 = mainAssetBundle.LoadAsset<Sprite>("texCommandoR1");CommandoGrenade2 = mainAssetBundle.LoadAsset<Sprite>("texCommandoR2");CrocoDisease2 = mainAssetBundle.LoadAsset<Sprite>("texAcridR1");EngiTurret2 = mainAssetBundle.LoadAsset<Sprite>("texEngiR1");EngiWalker2 = mainAssetBundle.LoadAsset<Sprite>("texEngiR2");HereticNevermore2 = mainAssetBundle.LoadAsset<Sprite>("texHereticR2");HuntressBallista2 = mainAssetBundle.LoadAsset<Sprite>("texHuntressR2");HuntressRain2 = mainAssetBundle.LoadAsset<Sprite>("texHuntressR1");LoaderChargeFist2 = mainAssetBundle.LoadAsset<Sprite>("texLoaderU1");LoaderChargeZapFist2 = mainAssetBundle.LoadAsset<Sprite>("texLoaderU2");MercEvis2 = mainAssetBundle.LoadAsset<Sprite>("texMercR1");MercEvis2Projectile = mainAssetBundle.LoadAsset<Sprite>("texMercR2");ToolbotDash2 = mainAssetBundle.LoadAsset<Sprite>("texMultU1");TreebotFireFruitSeed2 = mainAssetBundle.LoadAsset<Sprite>("texRexR2");TreebotFlower2_2 = mainAssetBundle.LoadAsset<Sprite>("texRexR1");RailgunnerSupercharge2 = mainAssetBundle.LoadAsset<Sprite>("texRailgunnerR1");RailgunnerFireSupercharge2 = mainAssetBundle.LoadAsset<Sprite>("texRailgunnerP1");RailgunnerCryocharge2 = mainAssetBundle.LoadAsset<Sprite>("texRailgunnerR2");RailgunnerFireCryocharge2 = mainAssetBundle.LoadAsset<Sprite>("texRailgunnerP2");VoidFiendSuppress2 = mainAssetBundle.LoadAsset<Sprite>("texVoidFiendR1");VoidFiendCorruptedSuppress2 = mainAssetBundle.LoadAsset<Sprite>("texVoidFiendR1C");}}internal static AssetBundle mainAssetBundle;public static Shader hotpoo = Resources.Load<Shader>("Shaders/Deferred/HGStandard");public static Material commandoMat;public static void PopulateAssets(){if ((Object)(object)mainAssetBundle == (Object)null){using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("AncientScepter.ancientscepter")){mainAssetBundle = AssetBundle.LoadFromStream(stream);}}}public static Material CreateMaterial(string materialName, float emission, Color emissionColor, float normalStrength){//IL_0068: 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)if (!Object.op_Implicit((Object)(object)commandoMat)){commandoMat = Resources.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren<CharacterModel>().baseRendererInfos[0].defaultMaterial;}Material val = Object.Instantiate<Material>(commandoMat);Material val2 = mainAssetBundle.LoadAsset<Material>(materialName);if (!Object.op_Implicit((Object)(object)val2)){return commandoMat;}((Object)val).name = materialName;val.SetColor("_Color", val2.GetColor("_Color"));val.SetTexture("_MainTex", val2.GetTexture("_MainTex"));val.SetColor("_EmColor", emissionColor);val.SetFloat("_EmPower", emission);val.SetTexture("_EmTex", val2.GetTexture("_EmissionMap"));val.SetFloat("_NormalStrength", normalStrength);return val;}public static Material CreateMaterial(string materialName){return CreateMaterial(materialName, 0f);}public static Material CreateMaterial(string materialName, float emission){//IL_0002: Unknown result type (might be due to invalid IL or missing references)return CreateMaterial(materialName, emission, Color.black);}public static Material CreateMaterial(string materialName, float emission, Color emissionColor){//IL_0002: Unknown result type (might be due to invalid IL or missing references)return CreateMaterial(materialName, emission, emissionColor, 0f);}public static RendererInfo[] SetupRendererInfos(GameObject obj){//IL_0018: 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_0047: Unknown result type (might be due to invalid IL or missing references)//IL_0048: Unknown result type (might be due to invalid IL or missing references)Renderer[] componentsInChildren = obj.GetComponentsInChildren<Renderer>();RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[componentsInChildren.Length];for (int i = 0; i < componentsInChildren.Length; i++){array[i] = new RendererInfo{defaultMaterial = componentsInChildren[i].material,renderer = componentsInChildren[i],defaultShadowCastingMode = (ShadowCastingMode)1,ignoreOverlays = false};}return array;}}public class BanditRicochetOrb : Orb{public delegate void HitCallback(BanditRicochetOrb orb);public const float DamageCoefficientPerBounce = 0.9f;public const float BaseRicochetChance = 25f;public const float StackRicochetChance = 0.1f;public const float Range = 25f;public const int Bounces = 5;public bool isCrit;public bool resetBouncedObjectsPerBounce;public CharacterBody attackerBody;public DamageColorIndex damageColorIndex;public DamageType damageType;public float damageValue;public float procCoefficient = 1f;public float range;public float speed = 60f;public GameObject hitEffectPrefab;public GameObject inflictor;public GameObject tracerEffectPrefab;public HitCallback hitCallback;public int bouncesRemaining;public List<HealthComponent> bouncedObjects;public ProcChainMask procChainMask;public string hitSoundString;public TeamIndex teamIndex;private static readonly BullseyeSearch _search = new BullseyeSearch{sortMode = (SortMode)1,filterByLoS = false,searchDirection = Vector3.zero};public static bool RollNextRicochet(CharacterBody characterBody, float chanceCoefficient = 1f){if (!Object.op_Implicit((Object)(object)characterBody)){return false;}int buffCount = characterBody.GetBuffCount(Buffs.BanditSkull);return Util.CheckRoll((25f + 0.1f * (float)buffCount) * chanceCoefficient, 0f, (CharacterMaster)null);}public override void OnArrival(){//IL_002d: Unknown result type (might be due to invalid IL or missing references)//IL_0032: Unknown result type (might be due to invalid IL or missing references)//IL_003e: Unknown result type (might be due to invalid IL or missing references)//IL_005f: Unknown result type (might be due to invalid IL or missing references)//IL_006b: Unknown result type (might be due to invalid IL or missing references)//IL_006c: Unknown result type (might be due to invalid IL or missing references)//IL_0071: Unknown result type (might be due to invalid IL or missing references)//IL_0076: Unknown result type (might be due to invalid IL or missing references)//IL_0082: 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_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_009a: Unknown result type (might be due to invalid IL or missing references)//IL_00a6: Unknown result type (might be due to invalid IL or missing references)//IL_00ab: 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_00b2: 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_00bc: 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)//IL_00c9: Expected O, but got Unknown//IL_0105: Unknown result type (might be due to invalid IL or missing references)//IL_010a: Unknown result type (might be due to invalid IL or missing references)//IL_0116: Unknown result type (might be due to invalid IL or missing references)//IL_0120: Unknown result type (might be due to invalid IL or missing references)//IL_0122: Unknown result type (might be due to invalid IL or missing references)//IL_0127: Unknown result type (might be due to invalid IL or missing references)//IL_0132: Expected O, but got Unknown//IL_0195: Unknown result type (might be due to invalid IL or missing references)((Orb)this).OnArrival();if (Object.op_Implicit((Object)(object)base.target)){HealthComponent healthComponent = base.target.healthComponent;if (Object.op_Implicit((Object)(object)healthComponent)){DamageInfo val = new DamageInfo{damage = damageValue,attacker = (Object.op_Implicit((Object)(object)attackerBody) ? ((Component)attackerBody).gameObject : null),inflictor = inflictor,force = Vector3.zero,crit = isCrit,procChainMask = procChainMask,procCoefficient = procCoefficient,position = ((Component)base.target).transform.position,damageColorIndex = damageColorIndex,damageType = damageType};healthComponent.TakeDamage(val);GlobalEventManager.instance.OnHitEnemy(val, ((Component)healthComponent).gameObject);GlobalEventManager.instance.OnHitAll(val, ((Component)healthComponent).gameObject);if (Object.op_Implicit((Object)(object)tracerEffectPrefab)){EffectManager.SpawnEffect(tracerEffectPrefab, new EffectData{origin = ((Component)base.target).transform.position,start = base.origin}, true);}}hitCallback?.Invoke(this);if (bouncesRemaining > 0 && RollNextRicochet(attackerBody)){if (resetBouncedObjectsPerBounce){bouncedObjects.Clear();bouncedObjects.Add(base.target.healthComponent);}if (Object.op_Implicit((Object)(object)(base.target = PickNextTarget(((Component)base.target).transform.position)))){bouncesRemaining--;OrbManager.instance.AddOrb((Orb)(object)this);return;}}}bouncedObjects.Clear();}public override void Begin(){((Orb)this).Begin();((Orb)this).duration = ((Orb)this).distanceToTarget / speed;}public HurtBox PickNextTarget(Vector3 position){//IL_0005: Unknown result type (might be due to invalid IL or missing references)//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_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_001b: Unknown result type (might be due to invalid IL or missing references)_search.searchOrigin = position;_search.teamMaskFilter = TeamMask.GetEnemyTeams(teamIndex);_search.maxDistanceFilter = range;_search.RefreshCandidates();HurtBox val = (from h in _search.GetResults()where !bouncedObjects.Contains(h.healthComponent)select h).FirstOrDefault();if (Object.op_Implicit((Object)(object)val)){bouncedObjects.Add(val.healthComponent);}return val;}}internal static class CustomDamageTypes{internal static ModdedDamageType BanditRicochetOnHit;internal static ModdedDamageType ScepterCaptainNukeDT;internal static ModdedDamageType ScepterDestroy20ArmorDT;internal static ModdedDamageType IceBlastOnHit;internal static ModdedDamageType ScepterFruitDT;internal static void SetupDamageTypes(){//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_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_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0019: Unknown result type (might be due to invalid IL or missing references)//IL_001e: 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_0028: Unknown result type (might be due to invalid IL or missing references)//IL_002d: Unknown result type (might be due to invalid IL or missing references)BanditRicochetOnHit = DamageAPI.ReserveDamageType();ScepterCaptainNukeDT = DamageAPI.ReserveDamageType();ScepterDestroy20ArmorDT = DamageAPI.ReserveDamageType();IceBlastOnHit = DamageAPI.ReserveDamageType();ScepterFruitDT = DamageAPI.ReserveDamageType();}}public abstract class ItemBase<T> : ItemBase where T : ItemBase<T>{public static T instance { get; private set; }public ItemBase(){if (instance != null){throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ItemBoilerplate/Item was instantiated twice");}instance = this as T;}}public abstract class ItemBase{public static GameObject displayPrefab;protected readonly List<LanguageOverlay> languageOverlays = new List<LanguageOverlay>();public virtual bool AIBlacklisted { get; set; }public virtual bool CanRemove { get; } = true;public ItemDef ItemDef { get; private set; }public abstract GameObject ItemDisplayPrefab { get; }public abstract string ItemFullDescription { get; }public abstract Sprite ItemIcon { get; }public abstract string ItemLangTokenName { get; }public abstract string ItemLore { get; }public abstract GameObject ItemModel { get; }public abstract string ItemName { get; }public abstract string ItemPickupDesc { get; }public abstract ItemTag[] ItemTags { get; }public bool languageInstalled { get; private set; }public Xoroshiro128Plus rng { get; internal set; }public abstract ItemTier Tier { get; }public virtual bool TILER2_MimicBlacklisted { get; set; }[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]public static void TILER2_BlacklistItem(ItemDef itemDef){FakeInventory.blacklist.Add(itemDef);}public virtual void CreateConfig(ConfigFile config){}public virtual ItemDisplayRuleDict CreateDisplayRules(){//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_000c: Expected O, but got Unknownreturn new ItemDisplayRuleDict((ItemDisplayRule[])(object)new ItemDisplayRule[0]);}public int GetCount(CharacterBody body){Inventory val = (Object.op_Implicit((Object)(object)body) ? body.inventory : null);if (!Object.op_Implicit((Object)(object)val)){return 0;}return val.GetItemCount(ItemDef);}public int GetCount(CharacterMaster master){Inventory val = (Object.op_Implicit((Object)(object)master) ? master.inventory : null);if (!Object.op_Implicit((Object)(object)val)){return 0;}return val.GetItemCount(ItemDef);}public int GetCountSpecific(CharacterBody body, ItemDef itemDef){Inventory val = (Object.op_Implicit((Object)(object)body) ? body.inventory : null);if (!Object.op_Implicit((Object)(object)val)){return 0;}return val.GetItemCount(itemDef);}public virtual void Hooks(){}public abstract void Init(ConfigFile config);protected void CreateItem(){//IL_00fd: Unknown result type (might be due to invalid IL or missing references)//IL_010e: Unknown result type (might be due to invalid IL or missing references)//IL_0113: Unknown result type (might be due to invalid IL or missing references)//IL_0148: Unknown result type (might be due to invalid IL or missing references)//IL_0152: Expected O, but got UnknownItemDef = ScriptableObject.CreateInstance<ItemDef>();((Object)ItemDef).name = "ITEM_" + ItemLangTokenName;ItemDef.nameToken = "ITEM_" + ItemLangTokenName + "_NAME";ItemDef.pickupToken = "ITEM_" + ItemLangTokenName + "_PICKUP";ItemDef.descriptionToken = "ITEM_" + ItemLangTokenName + "_DESCRIPTION";ItemDef.loreToken = "ITEM_" + ItemLangTokenName + "_LORE";ItemDef.pickupModelPrefab = ItemModel;ItemDef.pickupIconSprite = ItemIcon;ItemDef.hidden = false;ItemDef.tags = ItemTags;ItemDef.canRemove = CanRemove;ItemDef.tier = Tier;ItemDef.deprecatedTier = Tier;if (TILER2_MimicBlacklisted && Chainloader.PluginInfos.ContainsKey("com.ThinkInvisible.TILER2")){TILER2_BlacklistItem(ItemDef);}ItemAPI.Add(new CustomItem(ItemDef, CreateDisplayRules()));}protected void CreateLang(){if (!languageInstalled){LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_NAME", ItemName);LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_PICKUP", ItemPickupDesc);LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_DESCRIPTION", ItemFullDescription);LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_LORE", ItemLore);languageInstalled = true;}}protected virtual void SetupMaterials(GameObject modelPrefab){Renderer[] componentsInChildren = modelPrefab.GetComponentsInChildren<Renderer>();for (int i = 0; i < componentsInChildren.Length; i++){componentsInChildren[i].material.shader = Assets.hotpoo;}}}internal class ItemHelpers{public static RendererInfo[] ItemDisplaySetup(GameObject obj){//IL_0018: 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_0047: Unknown result type (might be due to invalid IL or missing references)//IL_0048: Unknown result type (might be due to invalid IL or missing references)MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>();RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[componentsInChildren.Length];for (int i = 0; i < componentsInChildren.Length; i++){array[i] = new RendererInfo{defaultMaterial = ((Renderer)componentsInChildren[i]).material,renderer = (Renderer)(object)componentsInChildren[i],defaultShadowCastingMode = (ShadowCastingMode)1,ignoreOverlays = false};}return array;}public static KeyAssetRuleGroup CreateGenericDisplayRuleGroup(Object keyAsset_, GameObject itemPrefab, string childName, Vector3 position, Vector3 rotation, Vector3 scale){//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_0005: Unknown result type (might be due to invalid IL or missing references)//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000c: Unknown result type (might be due to invalid IL or missing references)//IL_0016: 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_001c: Unknown result type (might be due to invalid IL or missing references)ItemDisplayRule val = CreateDisplayRule(itemPrefab, childName, position, rotation, scale);return CreateDisplayRuleGroupWithRules(keyAsset_, val);}public static ItemDisplayRule CreateDisplayRule(GameObject itemPrefab, string childName, Vector3 position, Vector3 rotation, Vector3 scale){//IL_0002: 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_0023: Unknown result type (might be due to invalid IL or missing references)//IL_002a: Unknown result type (might be due to invalid IL or missing references)//IL_002b: Unknown result type (might be due to invalid IL or missing references)//IL_0032: Unknown result type (might be due to invalid IL or missing references)//IL_0033: Unknown result type (might be due to invalid IL or missing references)//IL_003a: Unknown result type (might be due to invalid IL or missing references)//IL_003c: Unknown result type (might be due to invalid IL or missing references)//IL_0041: Unknown result type (might be due to invalid IL or missing references)ItemDisplayRule result = default(ItemDisplayRule);result.ruleType = (ItemDisplayRuleType)0;result.childName = childName;result.followerPrefab = itemPrefab;result.limbMask = (LimbFlags)0;result.localPos = position;result.localAngles = rotation;result.localScale = scale;return result;}public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(Object keyAsset_, params ItemDisplayRule[] rules){//IL_0002: Unknown result type (might be due to invalid IL or missing references)//IL_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0022: 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_0028: Unknown result type (might be due to invalid IL or missing references)KeyAssetRuleGroup result = default(KeyAssetRuleGroup);result.keyAsset = keyAsset_;result.displayRuleGroup = new DisplayRuleGroup{rules = rules};return result;}public static string OrderManifestLoreFormatter(string deviceName, string estimatedDelivery, string sentTo, string trackingNumber, string devicePickupDesc, string shippingMethod, string orderDetails){string[] value = new string[19]{"<align=left>Estimated Delivery:<indent=70%>Sent To:</indent></align>","<align=left>" + estimatedDelivery + "<indent=70%>" + sentTo + "</indent></align>","","<indent=1%><style=cIsDamage><size=125%><u> Shipping Details:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</u></size></style></indent>","","<indent=2%>-Order: <style=cIsUtility>" + deviceName + "</style></indent>","<indent=4%><style=cStack>Tracking Number: " + trackingNumber + "</style></indent>","","<indent=2%>-Order Description: " + devicePickupDesc + "</indent>","","<indent=2%>-Shipping Method: <style=cIsHealth>" + shippingMethod + "</style></indent>","","","","<indent=2%>-Order Details: " + orderDetails + "</indent>","","","","<style=cStack>Delivery being brought to you by the brand new </style><style=cIsUtility>Orbital Drop-Crate System (TM)</style>. <style=cStack><u>No refunds.</u></style>"};return string.Join("\n", value);}}public static class MiscUtil{public class FilingDictionary<T> : IEnumerable<T>, IEnumerable{private readonly Dictionary<Type, T> _dict = new Dictionary<Type, T>();public int Count => _dict.Count;public void Add(T inst){_dict.Add(inst.GetType(), inst);}public void Add<subT>(subT inst) where subT : T{_dict.Add(typeof(subT), (T)(object)inst);}public void Set<subT>(subT inst) where subT : T{_dict[typeof(subT)] = (T)(object)inst;}public subT Get<subT>() where subT : T{return (subT)(object)_dict[typeof(subT)];}public void Remove(T inst){_dict.Remove(inst.GetType());}public void RemoveWhere(Func<T, bool> predicate){foreach (T item in _dict.Values.Where(predicate).ToList()){_dict.Remove(item.GetType());}}public IEnumerator<T> GetEnumerator(){return _dict.Values.GetEnumerator();}IEnumerator IEnumerable.GetEnumerator(){return GetEnumerator();}public ReadOnlyFilingDictionary<T> AsReadOnly(){return new ReadOnlyFilingDictionary<T>(this);}}public class ReadOnlyFilingDictionary<T> : IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable{private readonly FilingDictionary<T> baseCollection;public int Count => baseCollection.Count;public ReadOnlyFilingDictionary(FilingDictionary<T> baseCollection){this.baseCollection = baseCollection;base..ctor();}public IEnumerator<T> GetEnumerator(){return baseCollection.GetEnumerator();}IEnumerator IEnumerable.GetEnumerator(){return baseCollection.GetEnumerator();}}public static List<CharacterMaster> AliveList(bool playersOnly = false){if (playersOnly){return (from x in PlayerCharacterMasterController.instanceswhere x.isConnected && Object.op_Implicit((Object)(object)x.master) && x.master.hasBody && x.master.GetBody().healthComponent.aliveselect x.master).ToList();}return CharacterMaster.readOnlyInstancesList.Where((CharacterMaster x) => x.hasBody && x.GetBody().healthComponent.alive).ToList();}public static void SpawnItemFromBody(CharacterBody src, int tier, Xoroshiro128Plus rng){//IL_0094: 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_00c7: Unknown result type (might be due to invalid IL or missing references)List<PickupIndex> list = tier switch{0 => Run.instance.availableTier1DropList, 1 => Run.instance.availableTier2DropList, 2 => Run.instance.availableTier3DropList, 3 => Run.instance.availableLunarItemDropList, 4 => Run.instance.availableEquipmentDropList, 5 => Run.instance.availableLunarEquipmentDropList, _ => throw new ArgumentOutOfRangeException("tier", tier, "spawnItemFromBody: Item tier must be between 0 and 5 inclusive"), };PickupDropletController.CreatePickupDroplet(list[rng.RangeInt(0, list.Count)], src.transform.position, new Vector3(Random.Range(-5f, 5f), 20f, Random.Range(-5f, 5f)));}}public class ModCompat{internal static bool compatBetterUI;public static void Init(){if (Chainloader.PluginInfos.ContainsKey("com.xoxfaby.BetterUI")){BetterUICompatInit();}}public static void BetterUICompatInit(){compatBetterUI = true;}}public class ArtificerFlamethrower2 : ScepterSkill{public const float FireCloudLifetime = 10f;public GameObject fireCloud { get; private set; }public override SkillDef scepterSkillDef { get; protected set; }public override string newDescToken { get; protected set; }public override string oldDescToken { get; protected set; }public override string scepterSkillDesc => StringExtension.ToScepterDesc("火焰喷射距离增加" + StringExtension.ToUtil((object)StringExtension.ToBaseAndStkPct<int>(1, "(每层+_)")) + ",击中时留下持续" + StringExtension.ToUtil((object)10f) + "秒的" + StringExtension.ToFire("灼热火云") + ",每秒合计造成100%的伤害。");public override string targetBody => "MageBody";public override SkillSlot targetSlot => (SkillSlot)3;public override int targetVariantIndex => 0;[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]internal void doBetterUI(){ProcCoefficientCatalog.AddSkill(scepterSkillDef.skillName, ProcCoefficientCatalog.GetProcCoefficientInfo("MageBodyFlamethrower"));ProcCoefficientCatalog.AddToSkill(scepterSkillDef.skillName, "火云", fireCloud.GetComponent<ProjectileDotZone>().overlapProcCoefficient);}internal override void LoadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got Unknown//IL_0018: Unknown result type (might be due to invalid IL or missing references)//IL_0022: Expected O, but got UnknownFlamethrower.OnEnter += new hook_OnEnter(Flamethrower_OnEnter);Flamethrower.FireGauntlet += new Manipulator(IL_FlamethrowerFireGauntlet);}internal override void SetupAttributes(){//IL_0178: Unknown result type (might be due to invalid IL or missing references)//IL_017d: Unknown result type (might be due to invalid IL or missing references)//IL_0192: Unknown result type (might be due to invalid IL or missing references)//IL_019e: 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_01cd: Unknown result type (might be due to invalid IL or missing references)//IL_01d2: Unknown result type (might be due to invalid IL or missing references)//IL_01fc: Unknown result type (might be due to invalid IL or missing references)//IL_0201: Unknown result type (might be due to invalid IL or missing references)//IL_022b: Unknown result type (might be due to invalid IL or missing references)//IL_0230: Unknown result type (might be due to invalid IL or missing references)//IL_0256: 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_0276: Unknown result type (might be due to invalid IL or missing references)//IL_027b: Unknown result type (might be due to invalid IL or missing references)//IL_0287: Unknown result type (might be due to invalid IL or missing references)//IL_0291: Unknown result type (might be due to invalid IL or missing references)//IL_02a0: Unknown result type (might be due to invalid IL or missing references)//IL_02a5: Unknown result type (might be due to invalid IL or missing references)//IL_02bc: 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)SkillDef val = LegacyResourcesAPI.Load<SkillDef>("SkillDefs/MageBody/MageBodyFlamethrower");scepterSkillDef = SkillUtil.CloneSkillDef(val);string text = "ANCIENTSCEPTER_MAGE_FLAMETHROWERNAME";newDescToken = "ANCIENTSCEPTER_MAGE_FLAMETHROWERDESC";oldDescToken = val.skillDescriptionToken;string text2 = "龙息";LanguageAPI.Add(text, text2);scepterSkillDef.skillName = val.skillName + "Scepter";((Object)scepterSkillDef).name = scepterSkillDef.skillName;scepterSkillDef.skillNameToken = text;scepterSkillDef.skillDescriptionToken = newDescToken;scepterSkillDef.fullRestockOnAssign = false;scepterSkillDef.icon = Assets.SpriteAssets.ArtificerFlameThrower2;ContentAddition.AddSkillDef(scepterSkillDef);fireCloud = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/projectiles/BeetleQueenAcid"), "AncientScepterMageFlamethrowerCloud");ProjectileDotZone component = fireCloud.GetComponent<ProjectileDotZone>();component.lifetime = 10f;component.impactEffect = null;component.fireFrequency = 2f;Transform val2 = fireCloud.transform.Find("FX");Object.Destroy((Object)(object)((Component)val2.Find("Spittle")).gameObject);Object.Destroy((Object)(object)((Component)val2.Find("Decal")).gameObject);Object.Destroy((Object)(object)((Component)val2.Find("Gas")).gameObject);GameObjectExtension.RemoveComponents<AnimateShaderAlpha>(((Component)val2).gameObject);GameObject obj = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("prefabs/FireTrail").GetComponent<DamageTrail>().segmentPrefab, val2);MainModule main = obj.GetComponent<ParticleSystem>().main;((MainModule)(ref main)).duration = 10f;((MainModule)(ref main)).gravityModifier = MinMaxCurve.op_Implicit(-0.05f);MinMaxCurve startSizeX = ((MainModule)(ref main)).startSizeX;((MinMaxCurve)(ref startSizeX)).constantMin = ((MinMaxCurve)(ref startSizeX)).constantMin * 0.75f;((MinMaxCurve)(ref startSizeX)).constantMax = ((MinMaxCurve)(ref startSizeX)).constantMax * 0.75f;MinMaxCurve startSizeY = ((MainModule)(ref main)).startSizeY;((MinMaxCurve)(ref startSizeY)).constantMin = ((MinMaxCurve)(ref startSizeY)).constantMin * 0.75f;((MinMaxCurve)(ref startSizeY)).constantMax = ((MinMaxCurve)(ref startSizeY)).constantMax * 0.75f;MinMaxCurve startSizeZ = ((MainModule)(ref main)).startSizeZ;((MinMaxCurve)(ref startSizeZ)).constantMin = ((MinMaxCurve)(ref startSizeZ)).constantMin * 0.75f;((MinMaxCurve)(ref startSizeZ)).constantMax = ((MinMaxCurve)(ref startSizeZ)).constantMax * 0.75f;MinMaxCurve startLifetime = ((MainModule)(ref main)).startLifetime;((MinMaxCurve)(ref startLifetime)).constantMin = 0.75f;((MinMaxCurve)(ref startLifetime)).constantMax = 1.5f;GameObjectExtension.RemoveComponent<DestroyOnTimer>(obj);obj.transform.localPosition = Vector3.zero;obj.transform.localScale = Vector3.one;ShapeModule shape = obj.GetComponent<ParticleSystem>().shape;((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)0;((ShapeModule)(ref shape)).scale = Vector3.one * 1.5f;EmissionModule emission = obj.GetComponent<ParticleSystem>().emission;((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(AncientScepterItem.artiFlamePerformanceMode ? 4f : 20f);GameObject gameObject = ((Component)val2.Find("Point Light")).gameObject;if (AncientScepterItem.artiFlamePerformanceMode){Object.Destroy((Object)(object)gameObject);}else{Light component2 = gameObject.GetComponent<Light>();component2.color = new Color(1f, 0.5f, 0.2f);component2.intensity = 3.5f;component2.range = 5f;}ContentAddition.AddProjectile(fireCloud);if (ModCompat.compatBetterUI){doBetterUI();}}internal override void UnloadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownFlamethrower.FireGauntlet -= new Manipulator(IL_FlamethrowerFireGauntlet);}private void Flamethrower_OnEnter(orig_OnEnter orig, Flamethrower self){//IL_0045: Unknown result type (might be due to invalid IL or missing references)orig.Invoke(self);float num = 1f + (float)ItemBase<AncientScepterItem>.instance.GetCount(((EntityState)self).characterBody);self.maxDistance *= num;self.flamethrowerEffectPrefab.transform.Find("Bone1").localScale = new Vector3(num, num, num);}private void IL_FlamethrowerFireGauntlet(ILContext il){//IL_0001: Unknown result type (might be due to invalid IL or missing references)//IL_0007: Expected O, but got Unknown//IL_0038: Unknown result type (might be due to invalid IL or missing references)ILCursor val = new ILCursor(il);if (!val.TryGotoNext(new Func<Instruction, bool>[1]{(Instruction x) => ILPatternMatchingExt.MatchCallvirt<BulletAttack>(x, "Fire")})){return;}val.Emit(OpCodes.Ldarg_0);val.EmitDelegate<Func<BulletAttack, Flamethrower, BulletAttack>>((Func<BulletAttack, Flamethrower, BulletAttack>)delegate(BulletAttack origAttack, Flamethrower state){//IL_001c: Unknown result type (might be due to invalid IL or missing references)//IL_0026: Expected O, but got Unknown//IL_0026: Unknown result type (might be due to invalid IL or missing references)//IL_0030: Expected O, but got Unknownif (IsScepterSkill(((EntityState)state).skillLocator)){origAttack.modifyOutgoingDamageCallback = (ModifyOutgoingDamageCallback)Delegate.Combine((Delegate?)(object)origAttack.modifyOutgoingDamageCallback, (Delegate?)new ModifyOutgoingDamageCallback(FireFireCloud));}return origAttack;});}private void FireFireCloud(BulletAttack bulletAttack, ref BulletHit hit, DamageInfo damageInfo){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_002a: 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_0061: Unknown result type (might be due to invalid IL or missing references)//IL_0066: Unknown result type (might be due to invalid IL or missing references)//IL_006e: 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_008d: Unknown result type (might be due to invalid IL or missing references)ProjectileManager.instance.FireProjectile(new FireProjectileInfo{crit = bulletAttack.isCrit,damage = bulletAttack.damage,damageColorIndex = bulletAttack.damageColorIndex,damageTypeOverride = (DamageType)128,force = 0f,owner = bulletAttack.owner,position = hit.point,procChainMask = bulletAttack.procChainMask,projectilePrefab = fireCloud,target = null});}}public class ArtificerFlyUp2 : ScepterSkill{public override SkillDef scepterSkillDef { get; protected set; }public override string newDescToken { get; protected set; }public override string oldDescToken { get; protected set; }public override string scepterSkillDesc => StringExtension.ToScepterDesc(StringExtension.ToDmg((object)"2倍", "") + "伤害、" + StringExtension.ToUtil((object)"5倍") + "半径," + StringExtension.ToUtil((object)"10倍") + StringExtension.ToStk((object)"(每层+10倍)") + "击退。");public override string targetBody => "MageBody";public override SkillSlot targetSlot => (SkillSlot)3;public override int targetVariantIndex => 1;[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]internal void doBetterUI(){ProcCoefficientCatalog.AddSkill(scepterSkillDef.skillName, ProcCoefficientCatalog.GetProcCoefficientInfo("MageBodyFlyUp"));}internal override void LoadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownFlyUpState.OnEnter += new hook_OnEnter(On_FlyUpStateEnter);}internal override void SetupAttributes(){SkillDef val = LegacyResourcesAPI.Load<SkillDef>("SkillDefs/MageBody/MageBodyFlyUp");scepterSkillDef = SkillUtil.CloneSkillDef(val);string text = "ANCIENTSCEPTER_MAGE_FLYUPNAME";newDescToken = "ANCIENTSCEPTER_MAGE_FLYUPDESC";oldDescToken = val.skillDescriptionToken;string text2 = "反物质浪涌";LanguageAPI.Add(text, text2);scepterSkillDef.skillName = val.skillName + "Scepter";((Object)scepterSkillDef).name = scepterSkillDef.skillName;scepterSkillDef.skillNameToken = text;scepterSkillDef.skillDescriptionToken = newDescToken;scepterSkillDef.fullRestockOnAssign = false;scepterSkillDef.icon = Assets.SpriteAssets.ArtificerFlyUp2;ContentAddition.AddSkillDef(scepterSkillDef);if (ModCompat.compatBetterUI){doBetterUI();}}internal override void UnloadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownFlyUpState.OnEnter -= new hook_OnEnter(On_FlyUpStateEnter);}private void On_FlyUpStateEnter(orig_OnEnter orig, FlyUpState self){//IL_0017: Unknown result type (might be due to invalid IL or missing references)//IL_001c: 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_0047: Unknown result type (might be due to invalid IL or missing references)float blastAttackDamageCoefficient = FlyUpState.blastAttackDamageCoefficient;float blastAttackForce = FlyUpState.blastAttackForce;float blastAttackRadius = FlyUpState.blastAttackRadius;CommonComponentCache commonComponents = ((EntityState)self).outer.commonComponents;if (IsScepterSkill(commonComponents.skillLocator)){FlyUpState.blastAttackDamageCoefficient *= 2f;FlyUpState.blastAttackForce *= (float)(10 * ItemBase<AncientScepterItem>.instance.GetCount(commonComponents.characterBody));FlyUpState.blastAttackRadius *= 5f;}orig.Invoke(self);FlyUpState.blastAttackDamageCoefficient = blastAttackDamageCoefficient;FlyUpState.blastAttackForce = blastAttackForce;FlyUpState.blastAttackRadius = blastAttackRadius;}}public class Bandit2ResetRevolver2 : ScepterSkill{public override SkillDef scepterSkillDef { get; protected set; }public override string newDescToken { get; protected set; }public override string oldDescToken { get; protected set; }public override string scepterSkillDesc => "\n<color=#d299ff>权杖:额外发射" + StringExtension.ToDmg((object)"1发", "") + StringExtension.ToStk((object)"(每层+1发)") + "子弹。</color>";public override string targetBody => "Bandit2Body";public override SkillSlot targetSlot => (SkillSlot)3;public override int targetVariantIndex => 0;[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]internal void doBetterUI(){ProcCoefficientCatalog.AddSkill(scepterSkillDef.skillName, ProcCoefficientCatalog.GetProcCoefficientInfo("ResetRevolver"));}internal override void SetupAttributes(){SkillDef val = LegacyResourcesAPI.Load<SkillDef>("SkillDefs/Bandit2Body/ResetRevolver");scepterSkillDef = SkillUtil.CloneSkillDef(val);string text = "ANCIENTSCEPTER_BANDIT2_RESETREVOLVERNAME";newDescToken = "ANCIENTSCEPTER_BANDIT2_RESETREVOLVERDESC";oldDescToken = val.skillDescriptionToken;string text2 = "暗杀";LanguageAPI.Add(text, text2);scepterSkillDef.skillName = val.skillName + "Scepter";((Object)scepterSkillDef).name = scepterSkillDef.skillName;scepterSkillDef.skillNameToken = text;scepterSkillDef.skillDescriptionToken = newDescToken;scepterSkillDef.fullRestockOnAssign = false;scepterSkillDef.icon = Assets.SpriteAssets.Bandit2ResetRevolver2;ContentAddition.AddSkillDef(scepterSkillDef);if (ModCompat.compatBetterUI){doBetterUI();}}internal override void LoadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownFireSidearmResetRevolver.ModifyBullet += new hook_ModifyBullet(FireSidearmResetRevolver_ModifyBullet);}internal override void UnloadBehavior(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownFireSidearmResetRevolver.ModifyBullet -= new hook_ModifyBullet(FireSidearmResetRevolver_ModifyBullet);}private void FireSidearmResetRevolver_ModifyBullet(orig_ModifyBullet orig, FireSidearmResetRevolver self, BulletAttack bulletAttack){orig.Invoke(self, bulletAttack);bulletAttack.bulletCount += (uint)ItemBase<AncientScepterItem>.instance.GetCount(((EntityState)self).characterBody);}}public class Bandit2SkullRevolver2 : ScepterSkill{public GameObject bulletTracer { get; private set; } = Resources.Load<GameObject>("Prefabs/Effects/Tracers/TracerCommandoDefault");public override SkillDef scepterSkillDef { get; protected set; }public override string newDescToken { get; protected set; }public override string oldDescToken { get; protected set; }public override string scepterSkillDesc => string.Format("\n<color=#d299ff>权杖:子弹有{0}%{1}的概率{2}弹射到{3}内的最多{4}名敌人。\n每次弹射后伤害减少{5}。</color>", 25f, StringExtension.ToStk((object)0.1f, "(每个标记+_%)"), StringExtension.ToStk((object)"(不受运气影响)"), StringExtension.ToUtil((object)StringExtension.ToBaseAndStk<float>(25f, "(每层+_)"), "_米"), StringExtension.ToDmg((object)StringExtension.ToBaseAndStk<int>(5, "(每层+_)"), ""), StringExtension.ToDeath(StringExtension.ToPct<float>(0.100000024f)));public override string targetBody => "Bandit2Body";public override SkillSlot targetSlot => (SkillSlot)3;public override int targetVariantIndex => 1;[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]internal void doBetterUI(){ProcCoefficientCatalog.AddSkill(scepterSkillDef.skillName, ProcCoefficientCatalog.GetProcCoefficientInfo("SkullRevolver"));}internal override void LoadBehavior(){//IL_0007: Unknown result type (might be due

The result has been truncated due to the large size, download it to view full contents!

using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.Serialization;using System.Runtime.Versioning;using System.Security;using System.Security.Permissions;using System.Threading.Tasks;using BepInEx;using BepInEx.Configuration;using BepInEx.Logging;using BtpTweak.Messages;using BtpTweak.Pools;using BtpTweak.Pools.OrbPools;using BtpTweak.Pools.ProjectilePools;using BtpTweak.RoR2Indexes;using BtpTweak.Tweaks;using BtpTweak.Tweaks.ItemTweaks;using BtpTweak.Tweaks.MithrixTweaks.MithrixEntityStates;using BtpTweak.Tweaks.SurvivorTweaks;using BtpTweak.Utils;using EntityStates;using EntityStates.Bandit2.Weapon;using EntityStates.BeetleQueenMonster;using EntityStates.BrotherMonster;using EntityStates.BrotherMonster.Weapon;using EntityStates.Captain.Weapon;using EntityStates.CaptainSupplyDrop;using EntityStates.Commando.CommandoWeapon;using EntityStates.Croco;using EntityStates.Duplicator;using EntityStates.Engi.EngiBubbleShield;using EntityStates.Engi.EngiWeapon;using EntityStates.GlobalSkills.LunarDetonator;using EntityStates.GlobalSkills.LunarNeedle;using EntityStates.GoldGat;using EntityStates.Heretic.Weapon;using EntityStates.Huntress;using EntityStates.Huntress.HuntressWeapon;using EntityStates.ImpBossMonster;using EntityStates.LaserTurbine;using EntityStates.Loader;using EntityStates.LunarGolem;using EntityStates.Mage;using EntityStates.Mage.Weapon;using EntityStates.Merc;using EntityStates.Merc.Weapon;using EntityStates.Missions.BrotherEncounter;using EntityStates.Missions.LunarScavengerEncounter;using EntityStates.NullifierMonster;using EntityStates.Railgunner.Reload;using EntityStates.Railgunner.Scope;using EntityStates.Scrapper;using EntityStates.TeleporterHealNovaController;using EntityStates.TitanMonster;using EntityStates.Toolbot;using EntityStates.Treebot.TreebotFlower;using EntityStates.Treebot.Weapon;using EntityStates.VagrantNovaItem;using GoldenCoastPlus;using GrooveSaladSpikestripContent;using GrooveSaladSpikestripContent.Content;using HG;using HG.GeneralSerializer;using HIFUArtificerTweaks;using HIFUArtificerTweaks.Skilldefs;using IL.EntityStates.Duplicator;using IL.EntityStates.LaserTurbine;using IL.EntityStates.Loader;using IL.EntityStates.Merc;using IL.EntityStates.Railgunner.Reload;using IL.EntityStates.Railgunner.Weapon;using IL.EntityStates.TitanMonster;using IL.EntityStates.VagrantNovaItem;using IL.RoR2;using IL.RoR2.Orbs;using KinematicCharacterController;using Microsoft.CodeAnalysis;using Mono.Cecil.Cil;using MonoMod.Cil;using MonoMod.RuntimeDetour.HookGen;using Newtonsoft.Json.Utilities;using On.EntityStates;using On.EntityStates.Bandit2.Weapon;using On.EntityStates.BeetleQueenMonster;using On.EntityStates.BrotherMonster;using On.EntityStates.BrotherMonster.Weapon;using On.EntityStates.Captain.Weapon;using On.EntityStates.CaptainSupplyDrop;using On.EntityStates.Croco;using On.EntityStates.Engi.EngiBubbleShield;using On.EntityStates.Engi.EngiWeapon;using On.EntityStates.GlobalSkills.LunarDetonator;using On.EntityStates.GlobalSkills.LunarNeedle;using On.EntityStates.GoldGat;using On.EntityStates.Heretic.Weapon;using On.EntityStates.Huntress.HuntressWeapon;using On.EntityStates.ImpBossMonster;using On.EntityStates.LaserTurbine;using On.EntityStates.Loader;using On.EntityStates.Mage;using On.EntityStates.Merc;using On.EntityStates.Merc.Weapon;using On.EntityStates.Missions.BrotherEncounter;using On.EntityStates.Missions.LunarScavengerEncounter;using On.EntityStates.Railgunner.Reload;using On.EntityStates.Railgunner.Scope;using On.EntityStates.TeleporterHealNovaController;using On.EntityStates.Toolbot;using On.EntityStates.VagrantNovaItem;using On.PlasmaCoreSpikestripContent.Content.Skills;using On.RoR2;using On.RoR2.Achievements.Captain;using On.RoR2.Artifacts;using On.RoR2.Items;using On.RoR2.Projectile;using On.RoR2.UI;using On.RoR2.UI.MainMenu;using PlasmaCoreSpikestripContent.Content.Skills;using PlasmaCoreSpikestripContent.Content.Skills.States;using ProperSave;using R2API;using R2API.Networking;using R2API.Networking.Interfaces;using R2API.Utils;using RedGuyMod.Content.Components;using RedGuyMod.SkillStates.Ravager;using RiskOfOptions;using RiskOfOptions.Lib;using RiskOfOptions.OptionConfigs;using RiskOfOptions.Options;using RoR2;using RoR2.Achievements;using RoR2.Artifacts;using RoR2.CharacterAI;using RoR2.EntityLogic;using RoR2.Items;using RoR2.Navigation;using RoR2.Orbs;using RoR2.Projectile;using RoR2.Skills;using RoR2.UI;using RoR2.UI.MainMenu;using TPDespair.ZetArtifacts;using TPDespair.ZetAspects;using UnityEngine;using UnityEngine.AddressableAssets;using UnityEngine.Networking;using UnityEngine.Rendering.PostProcessing;using vanillaVoid.Items;[assembly: CompilationRelaxations(8)][assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)][assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)][assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")][assembly: AssemblyCompany("BtpTweak")][assembly: AssemblyConfiguration("Release")][assembly: AssemblyFileVersion("1.0.0.0")][assembly: AssemblyInformationalVersion("1.0.0+bef5f33e86cbf2fab89e97226e1fe45870b5215d")][assembly: AssemblyProduct("BtpTweak")][assembly: AssemblyTitle("BtpTweak")][assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)][assembly: AssemblyVersion("1.0.0.0")][module: UnverifiableCode][module: RefSafetyRules(11)]namespace Microsoft.CodeAnalysis{[CompilerGenerated][Microsoft.CodeAnalysis.Embedded]internal sealed class EmbeddedAttribute : Attribute{}}namespace System.Runtime.CompilerServices{[CompilerGenerated][Microsoft.CodeAnalysis.Embedded]internal sealed class IsReadOnlyAttribute : Attribute{}[CompilerGenerated][Microsoft.CodeAnalysis.Embedded][AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]internal sealed class RefSafetyRulesAttribute : Attribute{public readonly int Version;public RefSafetyRulesAttribute(int P_0){Version = P_0;}}}namespace BtpTweak{public static class AssetReferences{public static readonly GameObject affixWhiteDelayEffect = "RoR2/Base/EliteIce/AffixWhiteDelayEffect.prefab".Load<GameObject>();public static readonly GameObject affixWhiteExplosion = "RoR2/Base/EliteIce/AffixWhiteExplosion.prefab".Load<GameObject>();public static readonly GameObject bonusMoneyPack = "RoR2/Base/BonusGoldPackOnKill/BonusMoneyPack.prefab".Load<GameObject>();public static readonly GameObject brotherBodyPrefab = "RoR2/Base/Brother/BrotherBody.prefab".Load<GameObject>();public static readonly GameObject brotherUltLineProjectileStatic = "RoR2/Base/BrotherHaunt/BrotherUltLineProjectileStatic.prefab".Load<GameObject>();public static readonly GameObject critspark = "RoR2/Base/Common/VFX/Critspark.prefab".Load<GameObject>();public static readonly GameObject critsparkHeavy = "RoR2/Base/Common/VFX/CritsparkHeavy.prefab".Load<GameObject>();public static readonly GameObject electricOrbProjectile = "RoR2/Base/ElectricWorm/ElectricOrbProjectile.prefab".Load<GameObject>();public static readonly GameObject elementalRingVoidBlackHole = "RoR2/DLC1/ElementalRingVoid/ElementalRingVoidBlackHole.prefab".Load<GameObject>();public static readonly GameObject fireMeatBallProjectile = "RoR2/Base/FireballsOnHit/FireMeatBall.prefab".Load<GameObject>();public static readonly GameObject fireTornado = "RoR2/Base/ElementalRings/FireTornado.prefab".Load<GameObject>();public static readonly GameObject fireworkLauncher = "RoR2/Base/Firework/FireworkLauncher.prefab".Load<GameObject>();public static readonly GameObject fireworkPrefab = "RoR2/Base/Firework/FireworkProjectile.prefab".Load<GameObject>();public static readonly GameObject fractureImpactEffect = "RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab".Load<GameObject>();public static readonly GameObject genericDelayBlast = "RoR2/Base/Common/GenericDelayBlast.prefab".Load<GameObject>();public static readonly GameObject helperPrefab = "RoR2/Base/Common/DirectorSpawnProbeHelperPrefab.prefab".Load<GameObject>();public static readonly GameObject iceRingExplosion = "RoR2/Base/ElementalRings/IceRingExplosion.prefab".Load<GameObject>();public static readonly GameObject lightningStake = "RoR2/Base/EliteLightning/LightningStake.prefab".Load<GameObject>();public static readonly GameObject lunarMissilePrefab = "RoR2/Base/EliteLunar/LunarMissileProjectile.prefab".Load<GameObject>();public static readonly GameObject magmaOrbProjectile = "RoR2/Base/MagmaWorm/MagmaOrbProjectile.prefab".Load<GameObject>();public static readonly GameObject molotovClusterProjectile = "RoR2/DLC1/Molotov/MolotovClusterProjectile.prefab".Load<GameObject>();public static readonly GameObject molotovProjectileDotZone = "RoR2/DLC1/Molotov/MolotovProjectileDotZone.prefab".Load<GameObject>();public static readonly GameObject molotovSingleProjectile = "RoR2/DLC1/Molotov/MolotovSingleProjectile.prefab".Load<GameObject>();public static readonly GameObject moonExitArenaOrbEffect = "RoR2/Base/moon/MoonExitArenaOrbEffect.prefab".Load<GameObject>();public static readonly GameObject omniExplosionVFXQuick = "RoR2/Base/Common/VFX/OmniExplosionVFXQuick.prefab".Load<GameObject>();public static readonly GameObject omniRecycleEffect = "RoR2/Base/Recycle/OmniRecycleEffect.prefab".Load<GameObject>();public static readonly GameObject shrineUseEffect = "RoR2/Base/Common/VFX/ShrineUseEffect.prefab".Load<GameObject>();public static readonly GameObject stickyBombProjectile = "RoR2/Base/StickyBomb/StickyBomb.prefab".Load<GameObject>();public static readonly GameObject teamWarCryActivation = "RoR2/Base/TeamWarCry/TeamWarCryActivation.prefab".Load<GameObject>();public static readonly GameObject coinImpact = "RoR2/Base/Common/VFX/CoinImpact.prefab".Load<GameObject>();public static readonly GameObject titanGoldPreFistProjectile = "RoR2/Base/Titan/TitanGoldPreFistProjectile.prefab".Load<GameObject>();public static readonly GameObject randomEquipmentTriggerProcEffect = "RoR2/DLC1/RandomEquipmentTrigger/RandomEquipmentTriggerProcEffect.prefab".Load<GameObject>();public static readonly Material helscourgeMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarWisp/matLunarWispFlames.mat").WaitForCompletion();public static readonly Material moonscourgeMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/moon2/matSkyboxMoon.mat").WaitForCompletion();public static readonly Material stormscourgeMat = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Mage/matMageCalibrateLightning.mat").WaitForCompletion();}public class AutoTeleportGameObject : MonoBehaviour{[SerializeField]private float waitingTime;public void SetTeleportWaitingTime(float newWaitingTime){waitingTime = newWaitingTime;}private void Awake(){((Behaviour)this).enabled = NetworkServer.active;}private void Update(){if ((waitingTime -= Time.deltaTime) < 0f){TeleportDroplet();((Behaviour)this).enabled = false;}}private void TeleportDroplet(){//IL_0008: 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_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_0026: Unknown result type (might be due to invalid IL or missing references)//IL_002b: Unknown result type (might be due to invalid IL or missing references)//IL_0032: Unknown result type (might be due to invalid IL or missing references)//IL_0037: Unknown result type (might be due to invalid IL or missing references)//IL_003d: Expected O, but got Unknown//IL_0049: Unknown result type (might be due to invalid IL or missing references)//IL_0053: Expected O, but got Unknown//IL_0068: Unknown result type (might be due to invalid IL or missing references)//IL_007c: Unknown result type (might be due to invalid IL or missing references)//IL_0081: Unknown result type (might be due to invalid IL or missing references)SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>();val.hullSize = (HullClassification)0;val.nodeGraphType = (GraphType)0;val.prefab = AssetReferences.helperPrefab;DirectorPlacementRule val2 = new DirectorPlacementRule{placementMode = (PlacementMode)3,position = ((Component)this).transform.position};GameObject val3 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, val2, RoR2Application.rng));if (Object.op_Implicit((Object)(object)val3)){TeleportHelper.TeleportGameObject(((Component)this).gameObject, val3.transform.position + new Vector3(0f, 5f, 0f));Debug.Log((object)"tp item back");Object.Destroy((Object)(object)val3);}Object.Destroy((Object)(object)val);}}public static class BetterEvents{public delegate void BetterHitEnemyEventHandler(DamageInfo damageInfo, CharacterBody attackerBody, CharacterBody victimBody);public delegate void BetterHitAllEventHandler(DamageInfo damageInfo, CharacterBody attackerBody);[CompilerGenerated]private static class <>O{public static Manipulator <0>__GlobalEventManager_OnHitEnemy;public static hook_OnHitAll <1>__GlobalEventManager_OnHitAll;}public static event BetterHitEnemyEventHandler OnHitEnemy;public static event BetterHitAllEventHandler OnHitAll;static BetterEvents(){Init();}private static void Init(){//IL_0010: Unknown result type (might be due to invalid IL or missing references)//IL_0015: Unknown result type (might be due to invalid IL or missing references)//IL_001b: Expected O, but got Unknown//IL_0030: Unknown result type (might be due to invalid IL or missing references)//IL_0035: Unknown result type (might be due to invalid IL or missing references)//IL_003b: Expected O, but got Unknownobject obj = <>O.<0>__GlobalEventManager_OnHitEnemy;if (obj == null){Manipulator val = GlobalEventManager_OnHitEnemy;<>O.<0>__GlobalEventManager_OnHitEnemy = val;obj = (object)val;}GlobalEventManager.OnHitEnemy += (Manipulator)obj;object obj2 = <>O.<1>__GlobalEventManager_OnHitAll;if (obj2 == null){hook_OnHitAll val2 = GlobalEventManager_OnHitAll;<>O.<1>__GlobalEventManager_OnHitAll = val2;obj2 = (object)val2;}GlobalEventManager.OnHitAll += (hook_OnHitAll)obj2;}private static void GlobalEventManager_OnHitAll(orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject){CharacterBody val = default(CharacterBody);if (damageInfo.procCoefficient != 0f && !damageInfo.rejected && Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref val) && Object.op_Implicit((Object)(object)val.master)){BetterEvents.OnHitAll?.Invoke(damageInfo, val);}}private static void GlobalEventManager_OnHitEnemy(ILContext il){//IL_0001: Unknown result type (might be due to invalid IL or missing references)//IL_0007: Expected O, but got Unknown//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_0095: Unknown result type (might be due to invalid IL or missing references)ILCursor val = new ILCursor(il);if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3]{(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 4),(Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterMaster>(x, "get_inventory"),(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 5)})){val.Emit(OpCodes.Ldarg_1);val.Emit(OpCodes.Ldloc_1);val.Emit(OpCodes.Ldloc_2);val.EmitDelegate<Action<DamageInfo, CharacterBody, CharacterBody>>((Action<DamageInfo, CharacterBody, CharacterBody>)delegate(DamageInfo damageInfo, CharacterBody attackerBody, CharacterBody victimBody){BetterEvents.OnHitEnemy?.Invoke(damageInfo, attackerBody, victimBody);});}else{Main.Logger.LogError((object)"OnHitEnemy Hook Failed!");}}}public static class BtpContent{public static class Buffs{public static BuffDef VoidFire { get; private set; }public static BuffDef DroneCommanderSpawnCooldown { get; private set; }[RuntimeInitializeOnLoadMethod]private static void InitBuffs(){//IL_0032: Unknown result type (might be due to invalid IL or missing references)//IL_0037: Unknown result type (might be due to invalid IL or missing references)VoidFire = ScriptableObject.CreateInstance<BuffDef>();((Object)VoidFire).name = "Void Fire";VoidFire.iconSprite = "RoR2/Base/Common/texBuffVoidFog.tif".Load<Sprite>();VoidFire.buffColor = Color.red;VoidFire.canStack = false;VoidFire.isHidden = true;VoidFire.isDebuff = false;VoidFire.isCooldown = false;if (!ContentAddition.AddBuffDef(VoidFire)){Main.Logger.LogError((object)("Buff '" + ((Object)VoidFire).name + "' failed to be added!"));}DroneCommanderSpawnCooldown = ScriptableObject.CreateInstance<BuffDef>();((Object)DroneCommanderSpawnCooldown).name = "DroneCommander SpawnCooldown";DroneCommanderSpawnCooldown.iconSprite = "RoR2/DLC1/DroneWeapons/texDroneWeaponsIcon.png".Load<Sprite>();DroneCommanderSpawnCooldown.canStack = false;DroneCommanderSpawnCooldown.isHidden = false;DroneCommanderSpawnCooldown.isDebuff = false;DroneCommanderSpawnCooldown.isCooldown = true;if (!ContentAddition.AddBuffDef(DroneCommanderSpawnCooldown)){Main.Logger.LogError((object)("Buff '" + ((Object)DroneCommanderSpawnCooldown).name + "' failed to be added!"));}}}public static class Items{[CompilerGenerated]private static class <>O{public static hook_UpdateOverlays <0>__CharacterModel_UpdateOverlays;}public static ItemDef MoonscourgeAccursedItem { get; private set; }public static ItemDef StormscourgeAccursedItem { get; private set; }public static ItemDef HelscourgeAccursedItemDef { get; private set; }[RuntimeInitializeOnLoadMethod]private static void InitItems(){//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_002a: Expected O, but got UnknownCreateMoonscourgeItem();CreateStormscourgeItem();CreateHelscourgeItem();object obj = <>O.<0>__CharacterModel_UpdateOverlays;if (obj == null){hook_UpdateOverlays val = CharacterModel_UpdateOverlays;<>O.<0>__CharacterModel_UpdateOverlays = val;obj = (object)val;}CharacterModel.UpdateOverlays += (hook_UpdateOverlays)obj;}private static void CreateMoonscourgeItem(){//IL_0057: Unknown result type (might be due to invalid IL or missing references)MoonscourgeAccursedItem = ScriptableObject.CreateInstance<ItemDef>();((Object)MoonscourgeAccursedItem).name = "MoonscourgeAccursedItem";MoonscourgeAccursedItem.nameToken = "ACCURSEDMITHRIX_ITEM1_NAME";MoonscourgeAccursedItem.pickupToken = "ACCURSEDMITHRIX_ITEM1_PICKUP";MoonscourgeAccursedItem.descriptionToken = "ACCURSEDMITHRIX_ITEM1_DESC";MoonscourgeAccursedItem.tier = (ItemTier)5;MoonscourgeAccursedItem.deprecatedTier = (ItemTier)5;if (!ContentAddition.AddItemDef(MoonscourgeAccursedItem)){Main.Logger.LogError((object)"AddItemDef :: MoonscourgeAccursedItem Failed!");}}private static void CreateStormscourgeItem(){//IL_0057: Unknown result type (might be due to invalid IL or missing references)StormscourgeAccursedItem = ScriptableObject.CreateInstance<ItemDef>();((Object)StormscourgeAccursedItem).name = "StormscourgeAccursedItem";StormscourgeAccursedItem.nameToken = "ACCURSEDMITHRIX_ITEM2_NAME";StormscourgeAccursedItem.pickupToken = "ACCURSEDMITHRIX_ITEM2_PICKUP";StormscourgeAccursedItem.descriptionToken = "ACCURSEDMITHRIX_ITEM2_DESC";StormscourgeAccursedItem.tier = (ItemTier)5;StormscourgeAccursedItem.deprecatedTier = (ItemTier)5;if (!ContentAddition.AddItemDef(StormscourgeAccursedItem)){Main.Logger.LogError((object)"AddItemDef :: StormscourgeAccursedItem Failed!");}}private static void CreateHelscourgeItem(){//IL_0057: Unknown result type (might be due to invalid IL or missing references)HelscourgeAccursedItemDef = ScriptableObject.CreateInstance<ItemDef>();((Object)HelscourgeAccursedItemDef).name = "HelscourgeAccursedItem";HelscourgeAccursedItemDef.nameToken = "ACCURSEDMITHRIX_ITEM3_NAME";HelscourgeAccursedItemDef.pickupToken = "ACCURSEDMITHRIX_ITEM3_PICKUP";HelscourgeAccursedItemDef.descriptionToken = "ACCURSEDMITHRIX_ITEM3_DESC";HelscourgeAccursedItemDef.tier = (ItemTier)5;HelscourgeAccursedItemDef.deprecatedTier = (ItemTier)5;if (!ContentAddition.AddItemDef(HelscourgeAccursedItemDef)){Main.Logger.LogError((object)"AddItemDef :: HelscourgeAccursedItemDef Failed!");}}private static void CharacterModel_UpdateOverlays(orig_UpdateOverlays orig, CharacterModel self){//IL_001c: Unknown result type (might be due to invalid IL or missing references)//IL_0027: Unknown result type (might be due to invalid IL or missing references)//IL_002c: Unknown result type (might be due to invalid IL or missing references)//IL_002f: 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)orig.Invoke(self);if (self.body?.bodyIndex == (BodyIndex?)BodyIndexes.Brother && self.activeOverlayCount < CharacterModel.maxOverlays){Inventory inventory = self.body.inventory;if (inventory.GetItemCount(HelscourgeAccursedItemDef) > 0){Material[] currentOverlays = self.currentOverlays;int activeOverlayCount = self.activeOverlayCount;self.activeOverlayCount = activeOverlayCount + 1;currentOverlays[activeOverlayCount] = AssetReferences.helscourgeMat;}else if (inventory.GetItemCount(StormscourgeAccursedItem) > 0){Material[] currentOverlays2 = self.currentOverlays;int activeOverlayCount = self.activeOverlayCount;self.activeOverlayCount = activeOverlayCount + 1;currentOverlays2[activeOverlayCount] = AssetReferences.stormscourgeMat;}else if (inventory.GetItemCount(MoonscourgeAccursedItem) > 0){Material[] currentOverlays3 = self.currentOverlays;int activeOverlayCount = self.activeOverlayCount;self.activeOverlayCount = activeOverlayCount + 1;currentOverlays3[activeOverlayCount] = AssetReferences.moonscourgeMat;}}}}public static class Skills{public static SkillDef UngroundedDash { get; private set; }[RuntimeInitializeOnLoadMethod]private static void Init(){CreateUngroundedDash();}private static void CreateUngroundedDash(){//IL_0028: Unknown result type (might be due to invalid IL or missing references)//IL_002d: Unknown result type (might be due to invalid IL or missing references)//IL_00a3: Unknown result type (might be due to invalid IL or missing references)UngroundedDash = ScriptableObject.CreateInstance<SkillDef>();UngroundedDash.skillName = "LunarDash";UngroundedDash.activationState = new SerializableEntityStateType(typeof(SlideIntroState));UngroundedDash.activationStateMachineName = "Body";UngroundedDash.baseMaxStock = 1;UngroundedDash.baseRechargeInterval = 5f;UngroundedDash.beginSkillCooldownOnSkillEnd = false;UngroundedDash.canceledFromSprinting = false;UngroundedDash.cancelSprintingOnActivation = true;UngroundedDash.dontAllowPastMaxStocks = false;UngroundedDash.forceSprintDuringState = false;UngroundedDash.fullRestockOnAssign = true;UngroundedDash.interruptPriority = (InterruptPriority)1;UngroundedDash.isCombatSkill = false;UngroundedDash.rechargeStock = 2;UngroundedDash.requiredStock = 1;UngroundedDash.stockToConsume = 1;if (!ContentAddition.AddSkillDef(UngroundedDash)){Main.Logger.LogError((object)"CreateUngroundedDash failed!");}}}public static class Difficulties{public static DifficultyDef 造物 { get; private set; }public static DifficultyIndex 造物索引 { get; private set; }[RuntimeInitializeOnLoadMethod]private static void Init(){//IL_0012: 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_0022: Unknown result type (might be due to invalid IL or missing references)//IL_002c: Expected O, but got Unknown//IL_003b: Unknown result type (might be due to invalid IL or missing references)//IL_0045: Unknown result type (might be due to invalid IL or missing references)//IL_004b: Invalid comparison between Unknown and I4造物 = new DifficultyDef(3f, "DIFFICULTY_CREATION_NAME", (string)null, "DIFFICULTY_CREATION_DESC", Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)27)), "btp", true);造物索引 = DifficultyAPI.AddDifficulty(造物, "RoR2/DLC1/VoidCoin/texVoidCoinIcon.png".Load<Sprite>());if ((int)造物索引 == -1){Main.Logger.LogError((object)("Difficulties " + 造物.nameToken + " add failed!"));}Localizer.AddOverlay("DIFFICULTY_CREATION_NAME", "造物");Localizer.AddOverlay("DIFFICULTY_CREATION_DESC", "准备好面对造物主的试炼了吗?\n\n".ToRainbowWavy() + "以标准的季风难度开局,但难度随情况变化。\n\n".ToShaky() + ">玩家根据所选角色获得初始物品\n".ToHealing() + ">敌人将会根据情况获得各种增益\n".ToDeath() + ">充能半径将与充能进度成反比\n".ToDeath() + ">未充能时进度缓慢衰减\n".ToDeath());}}}internal interface IOnModLoadBehavior{void OnModLoad();}internal interface IOnModUnloadBehavior{void OnModUnload();}internal interface IOnRoR2LoadedBehavior{void OnRoR2Loaded();}internal static class Localizer{[CompilerGenerated]private static class <>O{public static hook_Start <0>__OnMainMenuControllerFirstStart;public static Action <1>__基础汉化;public static Action <2>__权杖技能汉化;public static Action <3>__圣骑士汉化;public static Action <4>__探路者汉化;public static Action <5>__象征汉化;public static Action <6>__破坏者汉化;}public const string 暴击 = "<style=cIsDamage>暴击</style>";public const string 爆炸 = "<style=cIsDamage>爆炸</style>";public const string 不与其他流血和出血重复 = "<style=cIsUtility>(不与其他流血和出血重复)</style>";public const string 不与其他瓦解重复 = "<style=cIsUtility>(不与其他瓦解重复)</style>";public const string 出血 = "<style=cDeath>出血</style>";public const string 此处忽略触发系数 = "<style=cIsUtility>(此处忽略触发系数)</style>";public const string 大小写字母串 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";public const string 额外 = "<style=cIsDamage>额外</style>";public const string 焚烧 = "<color=#f25d25>焚烧</color>";public const string 攻击速度 = "<style=cIsDamage>攻击速度</style>";public const string 护盾 = "<style=cIsHealing>护盾</style>";public const string 护甲 = "<style=cIsHealing>护甲</style>";public const string 基础护盾百分比再生速度 = "<style=cIsHealing>基础护盾<color=yellow>百分比</color>再生速度</style>";public const string 基础伤害 = "<style=cIsDamage>基础伤害</style>";public const string 基础生命值百分比再生速度 = "<style=cIsHealing>基础生命值<color=yellow>百分比</color>再生速度</style>";public const string 基础生命值再生速度 = "<style=cIsHealing>基础生命值再生速度</style>";public const string 金钱 = "<color=yellow>金钱</color>";public const string 冷却时间 = "<style=cIsUtility>冷却时间</style>";public const string 流血 = "<style=cIsDamage>流血</style>";public const string 燃烧 = "<style=cIsDamage>燃烧</style>";public const string 伤害 = "<style=cIsDamage>伤害</style>";public const string 眩晕 = "<style=cIsUtility>眩晕</style>";public const string 移动速度 = "<style=cIsUtility>移动速度</style>";public const string 总伤害 = "<style=cIsDamage>总伤害</style>";private static readonly List<string> strings = new List<string>();public static void AddOverlay(string key, string value, string lang){if (key != null && value != null){Language.FindLanguageByName(lang)?.stringsByToken.Remove(key);LanguageAPI.AddOverlay(key, value, lang);}}public static void AddOverlay(string key, string value){if (key == null || value == null){return;}foreach (Language allLanguage in Language.GetAllLanguages()){allLanguage.stringsByToken.Remove(key);}LanguageAPI.AddOverlay(key, value);}[RuntimeInitializeOnLoadMethod]private static void Init(){//IL_0010: Unknown result type (might be due to invalid IL or missing references)//IL_0015: Unknown result type (might be due to invalid IL or missing references)//IL_001b: Expected O, but got Unknownobject obj = <>O.<0>__OnMainMenuControllerFirstStart;if (obj == null){hook_Start val = OnMainMenuControllerFirstStart;<>O.<0>__OnMainMenuControllerFirstStart = val;obj = (object)val;}MainMenuController.Start += (hook_Start)obj;}private static void 基础汉化(){//IL_2f05: Unknown result type (might be due to invalid IL or missing references)//IL_2f0a: Unknown result type (might be due to invalid IL or missing references)//IL_2f0d: Unknown result type (might be due to invalid IL or missing references)AddOverlay("ITEM_JUMPBOOST_DESC", "<style=cIsUtility>奔跑时</style><style=cIsUtility>跳跃</style>可以增加<style=cIsUtility>10米</style><style=cStack>(每层增加10米)</style>的距离。<color=#FFFF00>掠夺者特殊效果:跳跃能力提高" + 0.1f.ToBaseAndStkPct() + "</color>", "zh-CN");AddOverlay("ITEM_RANDOMEQUIPMENTTRIGGER_DESC", "每隔" + 30f.ToUtil("_秒") + "," + "随机选择".ToUtil() + "你的一件物品转化为" + "相同品质".ToUtil() + "的一件随机物品,每次转化的数量最多" + 3.ToBaseAndStk().ToUtil("_个") + "。", "zh-CN");AddOverlay("EQUIPMENT_SAWMERANG_DESC", "投掷<style=cIsDamage>三个穿透性的回旋锯</style>,每个造成" + 3f.ToDmgPct("_的基础伤害") + ",同时锯伤敌人,造成额外的<style=cIsDamage>每秒100%的基础伤害</style>,并使其<style=cIsDamage>流血</style>,在" + 5f.ToUtil("_秒") + "内合计造成" + 0.1f.ToDmgPct("_的总伤害") + ";若造成<style=cIsDamage>暴击</style>,则<style=cIsDamage>额外</style>造成<style=cDeath>出血</style>,在" + 10f.ToUtil("_秒") + "内合计造成" + 0.2f.ToDmgPct("_的总伤害") + "。", "zh-CN");AddOverlay("KEYWORD_SUPERBLEED", "<style=cKeywordName>出血</style><style=cSub>造成每秒" + 0.2f.ToDmgPct("_的基础伤害") + "。<i>出血可以叠加。</i></style>", "zh-CN");AddOverlay("BUFF_SUPERBLEED_DESC", "每秒受到" + 0.2f.ToDmgPct("_的基础伤害") + "。", "zh-CN");AddOverlay("ITEM_NOVAONLOWHEALTH_PICKUP", "受到一定量的伤害后或者处于低生命值时,爆发一次大范围新星。", "zh-CN");AddOverlay("ITEM_NOVAONLOWHEALTH_DESC", "受到的伤害" + "累计".ToDmg() + "超过" + "75%的生命值".ToHealing() + "后或者低于<style=cIsHealth>25%的生命值</style>时,以你为中心爆发一次" + "闪电新星".ToLightning() + ",造成" + DetonateState.blastDamageCoefficient.ToBaseAndStkPct().ToDmg("_的基础伤害") + "并" + "击晕".ToLightning() + "敌人,然后进入<style=cIsUtility>30秒<style=cStack>(每层减少50%)</style></style>冷却阶段。", "zh-CN");AddOverlay("ITEM_LASERTURBINE_PICKUP", "获得一个完全充能后自动发射的共鸣圆盘。", "zh-CN");AddOverlay("ITEM_LASERTURBINE_DESC", "获得一个" + "自动".ToUtil() + "充能的共鸣圆盘,基础充能速率为" + 0.01f.ToBaseAndStkPct().ToUtil("_每秒") + ",击杀敌人将给予一层持续" + 10.ToUtil("_秒的充能增益") + ",每层增益使充能速率增加" + 0.01f.ToPct().ToUtil("_每秒") + "。圆盘充能完毕后" + "自动".ToUtil() + "发射,在" + "可视范围内".ToUtil() + "所有个体之间弹射,每一次弹射可造成" + 1f.ToBaseAndStkPct().ToDmg("_的基础伤害") + "。弹射时圆盘将" + "穿透".ToUtil() + "沿途所有个体并产生<style=cIsDamage>爆炸</style>,<style=cIsDamage>爆炸</style>造成" + 3f.ToBaseAndStkPct().ToDmg("_的基础伤害") + "。", "zh-CN");AddOverlay("ITEM_ICICLE_DESC", "召唤" + "寒冰风暴".ToIce() + "攻击附近的" + 6f.ToUtil("_米") + 3f.ToStk("(每层风暴+_米)") + "敌人,造成<style=cIsDamage>每秒" + 3f.ToDmgPct() + 1f.ToStkPct("(每层风暴+_)") + "的伤害</style>,并使敌人<style=cIsUtility>减速</style><style=cIsUtility>80%</style>。<style=cIsDamage>每达成一次击杀</style>,增加一层持续" + 3f.ToUtil("_秒") + "的" + "风暴".ToIce() + ",最低为" + 1.ToBaseWithStk(1).ToUtil("_层") + ",最高为" + 6.ToBaseWithStk(3).ToUtil("_层") + "。", "zh-CN");AddOverlay("ITEM_DRONEWEAPONS_DESC", "获得" + "1架".ToUtil() + "<style=cIsDamage>德鲁曼上校</style>。\n无人机获得<style=cIsDamage>+50%</style><style=cStack>(每层+50%)</style>攻击速度和冷却时间缩减。\n无人机有<style=cIsDamage>10%<style=cStack>(每层+10%)</style></style>的几率在命中时发射一枚<style=cIsDamage>导弹</style>,合计造成<style=cIsDamage>100%<style=cStack>(每层+100%)</style></style>的伤害。\n无人机获得<style=cIsDamage>自动链式机枪</style>,造成<style=cIsDamage>6x100%</style>的伤害,可弹射命中<style=cIsDamage>2</style>名敌人。", "zh-CN");AddOverlay("BANDIT2_SPECIAL_ALT_DESCRIPTION", "<style=cIsDamage>屠杀者</style>。使用左轮手枪进行射击,造成<style=cIsDamage>600%的伤害</style>,可以<style=cIsDamage>斩杀</style>血量低于<style=cIsDamage>15%</style>的敌人。击杀敌人可以<style=cIsDamage>叠加亡命徒</style><style=cIsUtility>(死亡和过关不消失)</style>,使亡命徒的伤害提高<style=cIsDamage>10%</style>。当<style=cIsDamage>亡命徒层数</style>超过<style=cIsDamage>(5×自身等级)</style> 的1倍后,射击需要消耗1层<style=cStack>(每超过一倍+1层)</style>亡命徒。", "zh-CN");AddOverlay("BANDIT2_SPECIAL_DESCRIPTION", "<style=cIsDamage>屠杀者</style>。使用左轮手枪进行射击,造成" + 12f.ToDmgPct("_的伤害") + ",可以<style=cIsDamage>斩杀</style>血量低于<style=cIsDamage>15%</style>的敌人。击杀敌人可以<style=cIsUtility>重置所有能力的冷却时间</style>。", "zh-CN");AddOverlay("TOOLBOT_PRIMARY_ALT3_DESCRIPTION", "锯伤周围敌人并给予自身" + "临时屏障".ToHealing() + ",造成<style=cIsDamage>每秒1000%的伤害</style>。", "zh-CN");AddOverlay("EQUIPMENT_DEATHPROJECTILE_PICKUP", "投掷一个能够反复触发你的“击杀时起效”效果的诅咒娃娃。", "zh-CN");AddOverlay("EQUIPMENT_DEATHPROJECTILE_DESC", "投掷一个诅咒娃娃,每<style=cIsUtility>1</style>秒<style=cIsDamage>触发</style>你所有的<style=cIsDamage>击杀时起效</style>效果,持续<style=cIsUtility>8</style>秒。" + "同时最多存在3个娃娃".ToUtil() + "。", "zh-CN");AddOverlay("ITEM_SQUIDTURRET_DESC", "激活一个可交互目标时,召唤一个<style=cIsDamage>乌贼机枪塔</style>以<style=cIsDamage>100%<style=cStack>(每层增加100%)</style>的攻击速度</style>攻击附近的敌人。持续<style=cIsUtility>30</style>秒。", "zh-CN");AddOverlay("VV_SHELL_NAME", "失落的信标", "zh-CN");AddOverlay("STAGE_WEATHEREDSATELLITE_DREAM", "<style=cWorldEvent>你梦见天空和石头。</style>", "zh-CN");AddOverlay("STAGE_DRYBASIN_DREAM", "<style=cWorldEvent>你梦见了无尽的荒芜。</style>", "zh-CN");AddOverlay("BAZAAR_SEER_FBLSCENE", "<style=cWorldEvent>你梦见了雾与水。</style>", "zh-CN");AddOverlay("ELITE_MODIFIER_GOLD", "黄金的 {0}", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOHEAVYTAP_DESCRIPTION", "作为指挥官,在不使用主要技能的情况下完成一关。", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOHEAVYTAP_NAME", "指挥官:狂欢", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOPLASMATAP_DESCRIPTION", "作为指挥官,在一局游戏中造成70次闪电链攻击。", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOPLASMATAP_NAME", "指挥官:闪电精华", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_DESCRIPTION", "作为指挥官,在同一关监禁敌人30次。", "zh-CN");AddOverlay("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_NAME", "指挥官:燃烧", "zh-CN");AddOverlay("ACHIEVEMENT_GRANDFATHERPARADOX_DESCRIPTION", "出乎意料的两栖动物,不幸的结局。", "zh-CN");AddOverlay("ACHIEVEMENT_GRANDFATHERPARADOX_NAME", "呛鼻毒师:祖父悖论", "zh-CN");AddOverlay("ACHIEVEMENT_RIGHTTOJAIL_DESCRIPTION", "作为呛鼻毒师,监禁一名虚空狱卒。", "zh-CN");AddOverlay("ACHIEVEMENT_RIGHTTOJAIL_NAME", "呛鼻毒师:监禁权", "zh-CN");AddOverlay("ACHIEVEMENT_SPIKESTRIPACRIDDEFEATVOID_DESCRIPTION", "作为呛鼻毒师,逃离天文馆或在模拟器中完成50波次。", "zh-CN");AddOverlay("ACHIEVEMENT_SPIKESTRIPACRIDDEFEATVOID_NAME", "呛鼻毒师:来自灵魂深渊的饥饿", "zh-CN");AddOverlay("ACHIEVEMENT_SPIKESTRIPCOMMANDODEFEATVOID_DESCRIPTION", "作为指挥官,逃离天文馆或在模拟器中完成50波次。", "zh-CN");AddOverlay("ACHIEVEMENT_SPIKESTRIPCOMMANDODEFEATVOID_NAME", "指挥官:缠绕~束缚—", "zh-CN");AddOverlay("ACHIEVEMENT_VOIDCRIDUNLOCK_DESCRIPTION", "作为呛鼻毒师,腐蚀自己7次以打破限制。", "zh-CN");AddOverlay("BOG_PATHFINDER_BODY_UTILITY_SPIN_DESCRIPTION", "<style=cWorldEvent>未完成</style>。跃向空中,快速旋转造成<style=cIsDamage>300% 的伤害</style>,落地时会进行一次水平横扫并造成<style=cIsDamage>800% 的伤害</style>。", "zh-CN");AddOverlay("BRASSMONOLITH_BODY_NAME", "黄铜钟楼", "zh-CN");AddOverlay("BRASSMONOLITH_BODY_SUBTITLE", "坚如磐石的守望者", "zh-CN");AddOverlay("BUFF_DEAFENED_NAME", "失聪", "zh-CN");AddOverlay("CAPTAIN_PRIMARY_DESCRIPTION", "喷射一大团弹丸,造成<style=cIsDamage>8x120%的伤害</style>。为攻击充能将缩小<style=cIsUtility>扩散范围</style>。<style=cStack>(每层完美巨兽+100%击退)</style>", "zh-CN");AddOverlay("CAPTAIN_SECONDARY_DESCRIPTION", "<style=cIsDamage>震荡</style>。发射一枚造成<style=cIsDamage>100%伤害</style>的快速电镖,弹射时<style=cIsUtility>电击</style>周围敌人。如果弹射将能飞行到更远地点。", "zh-CN");AddOverlay("CAPTAIN_SECONDARY_NAME", "能量电镖", "zh-CN");AddOverlay("CAPTAIN_SUPPLY_EQUIPMENT_RESTOCK_DESCRIPTION", "使用时" + "为装备充能".ToUtil() + "。消耗的能量随时间自动填充,速度随等级提升。", "zh-CN");AddOverlay("CAPTAIN_SUPPLY_HEAL_DESCRIPTION", "每秒为附近10米" + "(每级+1米)".ToStk() + "所有友方<style=cIsHealing>恢复</style>等同于各个角色<style=cIsHealing>最大生命值</style>" + "10%".ToHealing() + "(每级+1%)".ToStk() + "的生命值。", "zh-CN");AddOverlay("CAPTAIN_SUPPLY_SHOCKING_DESCRIPTION", "间歇性<style=cIsDamage>震荡</style>附近20米的所有敌人,使其无法移动。", "zh-CN");AddOverlay("CAPTAIN_UTILITY_ALT1_DESCRIPTION", "<style=cIsDamage>眩晕</style>。" + "消耗4层充能".ToUtil() + "向<style=cIsDamage>UES顺风号</style>请求发动一次<style=cIsDamage>动能打击</style>。在<style=cIsUtility>20秒</style>后,对所有角色造成" + 500f.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("CHARACTER_SIGMACONSTRUCT_NAME", "西格玛结构体", "zh-CN");AddOverlay("COMMANDO_HEAVYTAP_DESCRIPTION", "<style=cIsDamage>绝对光滑</style>。射击两次,造成<style=cIsDamage>2x155%的伤害</style>。", "zh-CN");AddOverlay("COMMANDO_HEAVYTAP_NAME", "沉重双击", "zh-CN");AddOverlay("COMMANDO_SECONDARY_DESCRIPTION", "发射一枚<style=cIsDamage>穿甲弹</style>,造成" + 4f.ToDmgPct("_的伤害") + "。每次穿透敌人,造成的伤害提高<style=cIsDamage>40%</style>。", "zh-CN");AddOverlay("COMMANDO_SPECIAL_ALT1_DESCRIPTION", "扔出一枚手雷,爆炸可造成" + 12f.ToDmgPct("_的伤害") + "。最多可投掷2枚。", "zh-CN");AddOverlay("COMMANDO_SPECIAL_DESCRIPTION", "<style=cIsDamage>眩晕</style>。连续射击,每枚弹丸造成" + FireBarrage.damageCoefficient.ToDmgPct("_的伤害") + "。射击次数随攻击速度增加。", "zh-CN");AddOverlay("CROCO_PASSIVE_ALT_DESCRIPTION", "使用<style=cIsHealing>毒化</style>的攻击改为叠加<style=cIsDamage>枯萎</style>效果," + "忽略护甲".ToDeath() + ",造成<style=cIsDamage>每秒60%的伤害</style>。", "zh-CN");AddOverlay("CROCO_PASSIVE_DESCRIPTION", "<style=cIsHealing>毒化</style>攻击将会造成大量持续性伤害并" + "忽略护甲".ToDeath() + "。", "zh-CN");AddOverlay("CROCO_SECONDARY_ALT_DESCRIPTION", "<style=cIsHealing>毒化</style>。<style=cIsDamage>屠杀者</style>。<style=cIsHealing>自我恢复</style><style=cStack>(每层怪物牙齿可使每咬中一名敌人时额外恢复最大生命值的1%)</style>。啃咬一名敌人并造成<style=cIsDamage>320%的伤害</style>。", "zh-CN");AddOverlay("DOTFLARE_SKIN_ARMERC_NAME", "沙特", "zh-CN");AddOverlay("DOTFLARE_SKIN_DACRID_NAME", "洪荒", "zh-CN");AddOverlay("DOTFLARE_SKIN_DVIEND_NAME", "来自深渊", "zh-CN");AddOverlay("DOTFLARE_SKIN_FMAGE_NAME", "空姐", "zh-CN");AddOverlay("DOTFLARE_SKIN_GMULT_NAME", "格雷德", "zh-CN");AddOverlay("DOTFLARE_SKIN_HBANDIT_NAME", "拦路强盗", "zh-CN");AddOverlay("DOTFLARE_SKIN_MHUNTRESS_NAME", "舍伍德流氓", "zh-CN");AddOverlay("DOTFLARE_SKIN_MOBSTERMANDO_NAME", "剃刀边缘", "zh-CN");AddOverlay("DOTFLARE_SKIN_OMERC_NAME", "翡翠", "zh-CN");AddOverlay("DOTFLARE_SKIN_PBANDIT_NAME", "平克顿", "zh-CN");AddOverlay("DOTFLARE_SKIN_PCAP_NAME", "钢须", "zh-CN");AddOverlay("DOTFLARE_SKIN_SPLODR_NAME", "女士钟表", "zh-CN");AddOverlay("DOTFLARE_SKIN_SRAILER_NAME", "白色死亡", "zh-CN");AddOverlay("DOTFLARE_SKIN_SREX_NAME", "真菌", "zh-CN");AddOverlay("DOTFLARE_SKIN_VAHUNTRESS_NAME", "丘比特之箭", "zh-CN");AddOverlay("DOTFLARE_SKIN_VHUNTRESS_NAME", "幽灵猎手", "zh-CN");AddOverlay("DOTFLARE_SKIN_VTIFICER_NAME", "高贵", "zh-CN");AddOverlay("DOTFLARE_SKIN_WENGI_NAME", "莫洛克", "zh-CN");AddOverlay("ELITE_MODIFIER_PLATED", "装甲的 {0}", "zh-CN");AddOverlay("ELITE_MODIFIER_WARPED", "扭曲的 {0}", "zh-CN");AddOverlay("ENGI_UTILITY_DESCRIPTION", $"放置一个<style=cIsUtility>无法穿透且有击退力的护盾</style>来阻挡弹幕。每个盾需要消耗{2}层充能,存在<style=cIsUtility>{EngiTweak.BubbleShieldLifetime}秒</style>。", "zh-CN");AddOverlay("EQUIPMENT_BFG_DESC", "发射前子卷须,对" + "66.6".ToUtil() + "米范围内的敌人造成最高<style=cIsDamage>每秒666%的伤害</style>。接触目标并引爆后,会对" + 20.ToUtil("_米") + "范围内的敌人造成<style=cIsDamage>6666%的伤害</style>。", "zh-CN");AddOverlay("EQUIPMENT_COMMANDMISSILE_DESC", "发射一轮包含<style=cIsDamage>12</style>枚导弹的导弹雨,每枚导弹造成<style=cIsDamage>300%的伤害</style>。", "zh-CN");AddOverlay("EQUIPMENT_CRITONUSE_DESC", "<style=cIsDamage>暴击几率增加100%</style>,并使超过" + "100%".ToDmg() + "的" + "暴击几率".ToDmg() + "转换为" + "暴击伤害".ToDmg() + ",持续8秒。", "zh-CN");AddOverlay("EQUIPMENT_CRITONUSE_PICKUP", "获得100%暴击几率,并使超过100%的暴击几率转换为暴击伤害,持续8秒。", "zh-CN");AddOverlay("EQUIPMENT_FIREBALLDASH_DESC", "变成<style=cIsDamage>龙之火球</style>持续<style=cIsDamage>6</style>秒,受击可造成<style=cIsDamage>500%的伤害</style>,飞行时持续喷射造成" + "300%".ToDmg() + "(每层熔融钻机+300%)".ToDmg() + "基础伤害的岩浆球。结束时会引爆,造成<style=cIsDamage>800%的伤害</style>。", "zh-CN");AddOverlay("EQUIPMENT_GOLDGAT_DESC", "发射一阵钱雨,<style=cIsDamage>每颗子弹均造成" + GoldGatFire.damageCoefficient.ToDmgPct() + ",外加等同于消耗金钱的" + 3f.ToBaseAndStkBy逼近Pct() + "(此处层数=成卷的零钱层数+1)".ToStk() + "的伤害</style>。每颗子弹消耗" + GoldGatFire.baseMoneyCostPerBullet.ToDmg("_枚") + "金钱,价格随" + "开火时间".ToDmg() + "和" + "游戏时间".ToUtil() + "不断上升。", "zh-CN");AddOverlay("EQUIPMENT_LIFESTEALONHIT_DESC", "击中敌人时<style=cIsHealing>恢复</style>等同于你造成<style=cIsDamage>伤害</style><style=cIsHealing>20%</style>的生命值,并且使其<style=cIsDamage>流血</style>,在" + 5f.ToUtil("_秒") + "内合计造成" + 0.1f.ToDmgPct("_的总伤害") + ";若此次攻击造成<style=cIsDamage>暴击</style>,则改为使敌人<style=cDeath>出血</style>,在" + 10f.ToUtil("_秒") + "内合计造成" + 0.2f.ToDmgPct("_的总伤害") + "<style=cIsUtility>(不与其他流血和出血重复)</style>。效果持续<style=cIsHealing>8</style>秒。", "zh-CN");AddOverlay("EQUIPMENT_LIFESTEALONHIT_PICKUP", "击中敌人时造成流血或出血,并恢复等同于你造成伤害的一定比例的生命值,持续8秒。", "zh-CN");AddOverlay("EQUIPMENT_LIGHTNING_DESC", "召唤雷电攻击目标敌人,造成<style=cIsDamage>3000%的基础伤害</style>并<style=cIsDamage>眩晕</style>附近的敌人。", "zh-CN");AddOverlay("EQUIPMENT_MOLOTOV_DESC", "投掷<style=cIsDamage>6</style>个燃烧瓶,碎裂时<style=cIsDamage>点燃</style>敌人,造成<style=cIsDamage>500%的基础伤害</style>。每个燃烧瓶都能制造一片燃烧区域,<style=cIsDamage>每秒造成200%的伤害</style>。" + 0.1666f.ToStkPct("(每层汽油使伤害增加_)"), "zh-CN");AddOverlay("EQUIPMENT_RECYCLER_DESC", "将一个物品或装备<style=cIsUtility>转化</style>成另一个<style=cIsUtility>同等级</style>的物品或装备。无法" + "转化".ToUtil() + "碎片和回收机。在月球外" + "转化".ToUtil() + "月球".ToLunar() + "物品或装备时有可能被发现,物品或装备将会被传送回" + "月球".ToLunar() + "。" + "转化".ToUtil() + "虚空".ToVoid() + "物品时可能导致物品爆炸。", "zh-CN");AddOverlay("EQUIPMENT_RECYCLER_PICKUP", "将一个物品或装备转化成另一个。", "zh-CN");AddOverlay("EQUIPMENT_TEAMWARCRY_DESC", "所有友方进入<style=cIsDamage>狂热</style>状态,持续<style=cIsUtility>7</style>秒。<style=cIsUtility>移动速度</style>提升<style=cIsUtility>50%</style>" + 0.25f.ToStkPct("(每层战争号角+_)") + ",<style=cIsDamage>攻击速度</style>提升<style=cIsDamage>100%</style>" + 0.25f.ToStkPct("(每层战争号角+_)") + "。", "zh-CN");AddOverlay("EXPANSION_FORGOTTENRELICS_DESC", "将'被遗忘的遗物'的内容添加到游戏。", "zh-CN");AddOverlay("EXPANSION_FORGOTTENRELICS_NAME", "被遗忘的遗物", "zh-CN");AddOverlay("FOGBOUND_SCENEDEF_NAME_TOKEN", "雾气泻湖", "zh-CN");AddOverlay("FOGBOUND_SCENEDEF_SUBTITLE_TOKEN", "冥河浅滩", "zh-CN");AddOverlay("FROSTWISP_BODY_NAME", "冰霜幽魂", "zh-CN");AddOverlay("FRUJO_SKIN_PARDOFELISDEFINITION_NAME", "帕朵菲莉丝 喵~", "zh-CN");AddOverlay("GOLDENKNURL_DESC", "最大生命值".ToHealing() + "增加" + GoldenCoastPlus.KnurlHealth.Value.ToBaseAndStkPct().ToHealing() + "," + "基础生命值再生速度".ToHealing() + "增加" + GoldenCoastPlus.KnurlRegen.Value.ToBaseAndStk().ToHealing("_hp/s") + ",外加" + "生命值再生速度".ToHealing() + "提升" + "50%".ToHealing() + "," + "护甲".ToUtil() + "增加" + GoldenCoastPlus.KnurlArmor.Value.ToBaseAndStk().ToHealing("_点") + "。", "zh-CN");AddOverlay("GOLDENKNURL_NAME", "<color=yellow>黄金隆起</color>", "zh-CN");AddOverlay("GOLDENKNURL_PICKUP", "增加最大生命值、生命值再生和护甲。", "zh-CN");AddOverlay(FlamewallSD.nameToken.Replace("NAME", "DESCRIPTION"), "<style=cIsUtility>灵巧</style>。<style=cIsDamage>点燃</style>。向前冲刺,在身后召唤每秒造成" + Main.flamewallDamage.Value.ToDmgPct("_的伤害") + "的火柱</style>。", "zh-CN");AddOverlay(FlamewallSD.nameToken, "火墙", "zh-CN");AddOverlay("HIDDENGOLDBUFFITEM_NAME", "奥利雷奥尼特的祝福", "zh-CN");AddOverlay("HUNTRESS_PRIMARY_ALT_DESCRIPTION", string.Format("<style=cIsUtility>灵巧</style>。瞄准{0}内的敌人,拉弓射出<style=cIsDamage>{1}枚</style>跟踪箭,每枚造成{2}。如果暴击则发射<style=cIsDamage>{3}</style>枚跟踪箭。", 60f.ToUtil("_米") + 10f.ToStk("(每层猎人的鱼叉+_米)"), 3, 1.2f.ToDmgPct("_的伤害"), 6), "zh-CN");AddOverlay("HUNTRESS_PRIMARY_DESCRIPTION", "<style=cIsUtility>灵巧</style>。瞄准" + 60f.ToUtil("_米") + 10f.ToStk("(每层猎人的鱼叉+_米)") + "内的敌人,快速射出一枚能够造成" + 1.8f.ToDmgPct() + "伤害的跟踪箭。", "zh-CN");AddOverlay("HUNTRESS_SECONDARY_DESCRIPTION", string.Format("<style=cIsUtility>灵巧</style>。投掷一把追踪月刃,可弹射最多<style=cIsDamage>{0}</style>次,初始造成{1},每次弹射伤害增加{2}。", 10, 3f.ToDmgPct("_的伤害"), 0.100000024f.ToDmgPct()), "zh-CN");AddOverlay("HUNTRESS_SPECIAL_ALT1_DESCRIPTION", string.Format("向后<style=cIsUtility>传送</style>至空中。最多发射<style=cIsDamage>{0}</style>道能量闪电,每道造成<style=cIsDamage>{1}</style>。", 3, 9f.ToDmgPct("_的伤害")), "zh-CN");AddOverlay("HUNTRESS_SPECIAL_DESCRIPTION", "<style=cIsUtility>传送</style>至空中,向目标区域射下箭雨,使区域内所有敌人<style=cIsUtility>减速</style>,并造成每秒" + ArrowRain.damageCoefficient.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("IN_LOBBY_CONFIG_POPOUT_PANEL_NAME", "Mods配置", "zh-CN");AddOverlay("INTERACTABLE_AMBER_MOUNTAIN_SHRINE_CONTEXT", "这个神龛看起来不寻常...你确定要激活吗?", "zh-CN");AddOverlay("INTERACTABLE_AMBER_MOUNTAIN_SHRINE_MESSAGE", "<style=cShrine>{0} 请求发起琥珀挑战..</color>", "zh-CN");AddOverlay("INTERACTABLE_AMBER_MOUNTAIN_SHRINE_MESSAGE_2P", "<style=cShrine>你请求发起琥珀挑战..</color>", "zh-CN");AddOverlay("INTERACTABLE_AMBER_MOUNTAIN_SHRINE_NAME", "琥珀山之神龛", "zh-CN");AddOverlay("INTERACTABLE_CRIMSON_MOUNTAIN_SHRINE_CONTEXT", "这个神龛看起来不寻常...你确定要激活吗?", "zh-CN");AddOverlay("INTERACTABLE_CRIMSON_MOUNTAIN_SHRINE_MESSAGE", "<style=cShrine>{0} 请求发起深红挑战..</color>", "zh-CN");AddOverlay("INTERACTABLE_CRIMSON_MOUNTAIN_SHRINE_MESSAGE_2P", "<style=cShrine>你请求发起深红挑战..</color>", "zh-CN");AddOverlay("INTERACTABLE_CRIMSON_MOUNTAIN_SHRINE_NAME", "深红山之神龛", "zh-CN");AddOverlay("INTERACTIBLE_BATTERYBANK_CONTEXT", "更换燃料电池 ({0}/{1})", "zh-CN");AddOverlay("INTERACTIBLE_BATTERYBANK_NAME", "燃料电池组", "zh-CN");AddOverlay("INTERACTIBLE_BATTERYBANK_NAMEFULL", "充能完毕的燃料电池组", "zh-CN");AddOverlay("INTERACTIBLE_BATTERYSOURCE_CONTEXT", "激活", "zh-CN");AddOverlay("INTERACTIBLE_BATTERYSOURCE_NAME", "老旧传送器", "zh-CN");AddOverlay("INTERACTIBLE_BROKENTELEPORTER_ACTIVATED", "<style=cWorldEvent>能源遗物产生了共鸣。</style>", "zh-CN");AddOverlay("INTERACTIBLE_BROKENTELEPORTER_CONTEXT", "放置遗物", "zh-CN");AddOverlay("INTERACTIBLE_BROKENTELEPORTER_NAME", "破碎传送器", "zh-CN");AddOverlay("INTERACTIBLE_CLOAKEDSHRINE_NAME", "被遮掩的神龛", "zh-CN");AddOverlay("INTERACTIBLE_RELICENERGY_CONTEXT", "调查", "zh-CN");AddOverlay("INTERACTIBLE_SHRINE_TAR_CONTEXT", "供奉", "zh-CN");AddOverlay("INTERACTIBLE_SHRINE_TAR_NAME", "焦油神龛", "zh-CN");AddOverlay("INTERACTIBLE_SLUMBERINGPEDESTAL_CONTEXT", "放置遗物", "zh-CN");AddOverlay("INTERACTIBLE_SLUMBERINGPEDESTAL_FINISHED", "<style=cWorldEvent>基座已苏醒。</style>", "zh-CN");AddOverlay("INTERACTIBLE_SLUMBERINGPEDESTAL_NAME", "沉睡基座", "zh-CN");AddOverlay("INTERACTIBLE_STAGEORDERBUTTON_CONTEXT", "切换传送网络", "zh-CN");AddOverlay("INTERACTIBLE_STATICPORTAL_CONTEXT", "返回星球", "zh-CN");AddOverlay("ITEM_AbyssalMedkit_DESCRIPTION", "<style=cIsUtility>消耗品</style>,抵挡<style=cIsUtility>10次</style>减益后失效。每一次抵挡都有<style=cIsHealing>10%</style>概率给予你<style=cIsHealing>“祝·福”</style>。每个<style=cIsHealing>祝福</style>可使你<style=cIsUtility>所有属性提升3%</style>。<style=cIsVoid>使所有医疗包无效化</style>", "zh-CN");AddOverlay("ITEM_AbyssalMedkit_PICKUP", "消耗品,可以替你抵挡10次减益,每一次抵挡都有概率给予你“祝·福”", "zh-CN");AddOverlay("ITEM_ARMORREDUCTIONONHIT_DESC", "2秒".ToUtil() + "内命中敌人" + "5次".ToDmg() + "造成" + "粉碎".ToDmg() + "减益,将对方<style=cIsDamage>护甲</style>降低<style=cIsDamage>60</style>点,持续<style=cIsDamage>8秒</style><style=cStack>(每层+8秒)</style>。你的攻击将" + "穿透".ToDmg() + "被" + "粉碎".ToDmg() + "的敌人" + 1f.ToBaseAndStkBy逼近Pct().ToDmg() + "的护甲。", "zh-CN");AddOverlay("ITEM_ATTACKSPEEDANDMOVESPEED_DESC", "使<style=cIsDamage>攻击速度</style>提高<style=cIsDamage>7.5%</style><style=cStack>(每层+7.5%)</style>,使<style=cIsUtility>移动速度</style>提高<style=cIsUtility>7%</style><style=cStack>(每层+7%)</style>。<color=#FFFF00>加里翁特殊效果:最大生命值和基础生命值再生速度速度增加5%<style=cStack>(每层+5%)</style>。</color>", "zh-CN");AddOverlay("ITEM_AUTOCASTEQUIPMENT_DESC", "<style=cIsUtility>使装备冷却时间减少</style><style=cIsUtility>50%</style><style=cStack>(每层增加15%)</style>,但会使装备增加" + "0.15秒强制冷却时间".ToUtil() + "(每层+0.15秒)".ToStk() + "。装备会在<style=cIsUtility>冷却时间</style>结束时被迫自动<style=cIsUtility>激活</style>。", "zh-CN");AddOverlay("ITEM_BARRIERONKILL_DESC", "击败敌人时可获得一道<style=cIsHealing>临时屏障</style>,相当于增加<style=cIsHealing>15<style=cStack>(每层增加15)</style>点外加" + 0.0075f.ToBaseAndStkPct().ToHealing() + "的最大生命值</style>。</style><color=#FFFF00>船长特殊效果:给予10点<style=cStack>(每层+10点)</style>最大护盾值,外加最大护盾值增加10%<style=cStack>(每层+10%)</style>。</color>", "zh-CN");AddOverlay("ITEM_BARRIERONOVERHEAL_DESC", "基础护甲增加" + 50.ToBaseAndStk().ToHealing("_点") + ",外加升级获得护甲增加" + 1.ToBaseAndStk().ToHealing("_点") + "。过量<style=cIsHealing>治疗</style>会使你获得一道相当于" + 0.5f.ToBaseAndStkPct().ToHealing() + "已<style=cIsHealing>治疗</style>生命值的<style=cIsHealing>临时屏障</style>。", "zh-CN");AddOverlay("ITEM_BEAR_DESC", "增加<style=cIsHealing>10</style>点<style=cStack>(每层增加10点)</style>护甲。\n<style=cIsHealing>【护甲减伤公式:100%x护甲值÷(护甲值+100)】</style>", "zh-CN");AddOverlay("ITEM_BEARVOID_DESC", "有<style=cIsHealing>50%</style>概率<style=cIsUtility>(成为虚空的象征+50%概率)</style><style=cIsHealing>格挡</style>一次来袭的伤害。充能时间<style=cIsUtility>15秒</style><style=cStack>(每层-10%)</style>。<style=cIsVoid>使所有更艰难的时光无效化</style>。", "zh-CN");AddOverlay("ITEM_BEHEMOTH_DESC", "你的所有<style=cIsDamage>攻击均会产生爆炸</style>" + 0.1f.ToStk("(爆炸间隔:_秒)") + ",爆炸将" + "继承".ToUtil() + "这次攻击的" + "所有属性".ToUtil() + ",对" + 3.ToBaseAndStk().ToDmg("_米") + "范围内的敌人合计造成" + 0.6f.ToDmgPct() + "的额外伤害。<color=#FFFF00>船长特殊效果:关于“火神霰弹枪”(详情看技能介绍)。</color>", "zh-CN");AddOverlay("ITEM_BLEEDONHIT_DESC", "命中敌人时有<style=cIsDamage>10%</style><style=cStack>(每层+10%)</style>的几率使其<style=cIsDamage>流血</style>,在" + 5f.ToUtil("_秒") + "内合计造成" + 0.1f.ToDmgPct("_的总伤害") + ";若造成<style=cIsDamage>暴击</style>,则改为<style=cDeath>出血</style>,在" + 10f.ToUtil("_秒") + "内合计造成" + 0.2f.ToDmgPct("_的总伤害") + "<style=cIsUtility>(不与其他流血和出血重复)</style>。", "zh-CN");AddOverlay("ITEM_BLEEDONHITANDEXPLODE_DESC", "使<style=cIsDamage>流血</style>或<style=cDeath>出血</style>的敌人将会在死亡时产生半径" + 16.ToBaseWithStk(8).ToDmg("_米") + "(具体范围与敌人体型相关)".ToUtil() + "的<style=cIsDamage>鲜血爆炸</style>,造成等同于敌人身上剩余<style=cIsDamage>流血</style>和<style=cDeath>出血</style>伤害的" + 1f.ToBaseAndStkBy逼近Pct().ToDmg("_的伤害") + "。", "zh-CN");AddOverlay("ITEM_BLEEDONHITVOID_DESC", "攻击有" + 10.ToBaseAndStk().ToDmg("_%的几率") + "<style=cIsDamage>瓦解</style>敌人<style=cIsUtility>(不与其他瓦解重复)</style>,造成" + Configuration.AspectVoidBaseCollapseDamage.Value.ToBaseWithStkPct(Configuration.AspectVoidStackCollapseDamage.Value, "(每层熵的破裂+_)").ToDmg(Configuration.AspectVoidUseBase.Value ? "_的基础伤害" : "_的总伤害") + "。<style=cIsVoid>使所有三尖匕首无效化</style>。", "zh-CN");AddOverlay("ITEM_BLESSING_NAME_DESCRIPTION", "凝视深渊过久,深渊将回以凝视!\n<style=cIsVoid>所有属性提升3%</style><style=cStack>(每层+3%)</style>\n<style=cIsVoid>祝·福深入灵魂,将伴随你一生</style>。", "zh-CN");AddOverlay("ITEM_BONUSGOLDPACKONKILL_DESC", "<style=cIsDamage>击杀敌人</style>时有" + 5.ToBaseAndStk().ToUtil("_%") + "的几率掉落价值<style=cIsUtility>25" + 5.ToStk("(每层+_)") + "<color=yellow>金钱</color></style>的宝物<style=cIsUtility>(价值随时间变化)</style>。", "zh-CN");AddOverlay("ITEM_BOSSDAMAGEBONUS_DESC", "对<style=cIsHealing>护盾</style>和<style=cIsHealing>临时屏障</style>额外造成<style=cIsDamage>20%</style>的伤害<style=cStack>(每层增加20%)</style>。<color=#FFFF00>指挥官特殊效果:基础伤害增加2点<style=cStack>(每层+2点)</style>。</color>", "zh-CN");AddOverlay("ITEM_BOUNCENEARBY_DESC", string.Format("命中敌人时有{0}的几率向周围{1}内最多<style=cIsDamage>{2}名</style>敌人发射<style=cIsDamage>追踪钩爪</style>{3},合计造成{4}。", 33f.ToBaseWithStk(16.5f).ToDmg("_%"), 33f.ToUtil("_米"), 6, 0.33f.ToStk("(发射间隔:_秒)"), 1f.ToDmgPct("_的总伤害")), "zh-CN");AddOverlay("ITEM_BULWARKSHAUNT_SWORD_DESC", "神秘声音在你的脑海中回荡,低语着:<link=\"BulwarksHauntWavy\">\"方尖碑...方尖碑...\"</link>,看样子它好像想让你带它去方尖碑处。", "zh-CN");AddOverlay("ITEM_BULWARKSHAUNT_SWORD_UNLEASHED_DESC", "神秘声音在你的脑海中回荡,低语着:<link=\"BulwarksHauntWavy\">\"方尖碑...方尖碑...\"</link>,看样子它好像想让你带它去方尖碑处。", "zh-CN");AddOverlay("ITEM_CARTRIDGECONSUMED_DESCRIPTION", "他曾梦想成为一名艺术家...", "zh-CN");AddOverlay("ITEM_CHAINLIGHTNING_DESC", string.Format("有{0}的几率发射<style=cIsDamage>连锁闪电</style>{1},对{2}内的最多<style=cIsDamage>{3}个</style>目标合计造成{4}。", 4f.ToBaseAndStkBy逼近Pct().ToDmg(), 0.2f.ToStk("(发射间隔:_秒)"), 18.ToBaseWithStk(3).ToUtil("_米"), 3, 0.3f.ToBaseAndStkPct().ToDmg("_的总伤害")), "zh-CN");AddOverlay("ITEM_CHAINLIGHTNINGVOID_DESC", "有" + 4f.ToBaseAndStkBy逼近Pct().ToDmg() + "的几率发射<style=cIsDamage>虚空闪电</style>" + 0.2f.ToStk("(发射间隔:_秒)") + ",对同一个敌人合计造成" + 3.ToDmg() + "x" + 0.15f.ToBaseAndStkPct().ToDmg("_的总伤害") + "。<style=cIsVoid>使所有尤克里里无效化</style>。", "zh-CN");AddOverlay("ITEM_CLOVER_DESC", "所有随机效果的概率提升<style=cIsUtility>25%</style>" + "(叠加公式:幸运提升概率 = 原概率x(运气/(|运气|+3)))".ToStk() + "。", "zh-CN");AddOverlay("ITEM_CRITDAMAGE_DESC", "<style=cIsDamage>暴击伤害</style>增加<style=cIsDamage>100%</style><style=cStack>(每层+100%)</style>。<color=#FFFF00>磁轨炮手特殊效果:敌人弱点范围增加100%<style=cStack>(每层+100%)</style>(弱点框不再变大,防止遮挡视野)。</color>", "zh-CN");AddOverlay("ITEM_CRITGLASSESVOID_DESC", "<style=cIsDamage>暴击伤害</style>增加" + 0.0666f.ToBaseAndStkPct().ToDmg() + "。<style=cIsVoid>使所有透镜制作者的眼镜无效化</style>。", "zh-CN");AddOverlay("ITEM_CROWBAR_DESC", "对生命值超过<style=cIsDamage>90%</style>的敌人造成<style=cIsDamage>75%</style><style=cStack>(每层增加75%)</style>的额外伤害。", "zh-CN");AddOverlay("ITEM_DEATHMARK_DESC", "拥有不少于" + "4个".ToDmg() + "减益效果的敌人<style=cIsDamage>将被标记为死亡</style>,从所有来源受到的伤害增加" + 0.4f.ToDmgPct() + 0.08f.ToStkPct("(全队每层+_)") + ",持续" + 7.ToBaseAndStk().ToDmg() + "秒。", "zh-CN");AddOverlay("ITEM_ELEMENTALRINGVOID_DESC", "充能完毕后,<style=cIsDamage>不低于" + 1f.ToBaseAndStkPct() + "伤害的攻击</style>击中敌人时会产生一个黑洞,<style=cIsUtility>将" + 15f.ToBaseWithStk(3f) + "米范围内的敌人吸引至其中心</style>。持续<style=cIsUtility>5</style>秒后坍缩,合计造成" + 1f.ToBaseAndStkPct().ToDmg("_的总伤害") + "。充能时间<style=cIsUtility>20秒</style><style=cStack>(每层减少10%)</style>。<color=#FFFF00>虚空恶鬼特殊效果:基础充能时间降低至2秒。</color>", "zh-CN");AddOverlay("ITEM_ENERGIZEDONEQUIPMENTUSE_DESC", "激活装备".ToUtil() + "时吹响号角,使你" + "攻击速度".ToDmg() + "增加" + 0.7f.ToDmgPct() + ",持续" + 8.ToBaseWithStk(4).ToUtil("_秒") + "。", "zh-CN");AddOverlay("ITEM_EQUIPMENTMAGAZINE_DESC", "获得1次<style=cStack>(每层增加1次)</style><style=cIsUtility>额外的装备充能</style>。<style=cIsUtility>将装备冷却时间减少</style><style=cIsUtility>15%</style><style=cStack>(每层增加15%)</style>。<color=#FFFF00>雷克斯特殊效果:技能<style=cIsUtility>冷却时间</style>减少<style=cIsUtility>10%</style><style=cStack>(每层+10%)</style>。</color>", "zh-CN");AddOverlay("ITEM_ESSENCEOFTAR_DESC", "成为焦油的象征,<style=cDeath>生命不再自然恢复</style>。攻击敌人可<style=cIsHealing>吸收他们的生命</style>。<style=cDeath>移除将导致你直接死亡</style>", "zh-CN");AddOverlay("ITEM_EXECUTELOWHEALTHELITE_DESC", "立即击败生命值低于<style=cIsHealth>10%的精英怪物</style><style=cStack>(叠加公式:斩杀线 = 50%x(层数÷(层数+4)))</style>。", "zh-CN");AddOverlay("ITEM_EXPLODEONDEATH_DESC", string.Format("使{0}或{1}的敌人将会在死亡时召唤<style=cIsDamage>鬼火</style>,产生半径<style=cIsDamage>{2}米</style>{3}的{4}点燃敌人,造成将敌人身上剩余{5}和{6}伤害的{7}。", "<style=cIsDamage>燃烧</style>", "<color=#f25d25>焚烧</color>", 12, 4.ToStk("(每层+_米)") + "(具体范围与敌人体型相关)".ToUtil(), "火焰冲击波".ToFire(), "<style=cIsDamage>燃烧</style>", "<color=#f25d25>焚烧</color>", 3f.ToBaseAndStkBy逼近Pct().ToDmg("_的持续伤害")), "zh-CN");AddOverlay("ITEM_EXPLODEONDEATHVOID_DESC", "当你对敌人造成" + "第一次".ToUtil() + "伤害时将<style=cIsDamage>引爆</style>它们,产生半径" + 12.ToBaseWithStk(3).ToUtil("_米") + "(具体范围与敌人体型和剩余血量相关)".ToUtil() + "的爆炸,合计造成" + "敌方剩余百分比生命值".ToHealth() + "x" + 1f.ToBaseAndStkBy逼近Pct().ToDmg("_的总伤害") + "。<style=cIsVoid>使所有鬼火无效化</style>。", "zh-CN");AddOverlay("ITEM_EXTRALIFE_DESC", "<style=cIsUtility>倒下后</style>,该物品将被<style=cIsUtility>消耗</style>,你将<style=cIsHealing>起死回生</style>并获得<style=cIsHealing>3秒的无敌时间</style>。\n<style=cIsUtility>死去的迪奥将在过关时复活。\n此物品不会被米斯历克斯偷走</style>。", "zh-CN");AddOverlay("ITEM_FALLBOOTSVOID_DESC", "按住'E'可<style=cIsUtility>漂浮</style>并吸收<style=cIsUtility>引力波</style>。松开创造一个半径<style=cIsUtility>30米</style>的<style=cIsUtility>反重力区</style>,持续<style=cIsUtility>15</style>秒。之后进入<style=cIsUtility>20</style><style=cStack>(每层-50%)</style>秒的充能时间,反重力区中心会吸引周围敌人并造成<style=cIsDamage>200-2000%</style>的基础伤害。<style=cIsVoid>使所有H3AD-5T v2无效化</style>。", "zh-CN");AddOverlay("ITEM_FIREBALLSONHIT_DESC", "命中敌人时有" + 9f.ToBaseAndStkBy逼近Pct().ToDmg() + "的几率向敌人的" + "岩浆球喷泉".ToFire() + "中添加" + "3颗岩浆球".ToFire() + 0.3f.ToStk("(喷射间隔:_秒)") + ",每颗合计造成" + 0.6f.ToBaseAndStkPct().ToDmg("_的总伤害") + ",并<style=cIsDamage>点燃</style>敌人。", "zh-CN");AddOverlay("ITEM_FIRERING_DESC", "充能完毕后,<style=cIsDamage>不低于" + 1f.ToBaseAndStkPct("(取双环中层数高的每层+_)") + "伤害的攻击</style>击中敌人时会产生一道" + "符文火焰龙卷风".ToFire() + "轰击敌人,造成" + 1f.ToBaseAndStkPct().ToDmg() + "的总持续伤害,同时<style=cIsDamage>点燃</style>敌人。充能时间<style=cIsUtility>10秒</style><style=cStack>(每双手环减少10%)</style>。<color=#FFFF00>工匠特殊效果:基础充能时间降低至1秒,并无视伤害要求。</color>", "zh-CN");AddOverlay("ITEM_FLATHEALTH_DESC", "<style=cIsHealing>最大生命值</style>增加<style=cIsHealing>25</style>点<style=cStack>(每层+25点)</style>。升级获得的<style=cIsHealing>最大生命值</style>增加" + 0.2f.ToBaseAndStkPct().ToHealing() + "。<color=#FFFF00>厨师特殊效果:野牛肉排的效果翻倍。</color>", "zh-CN");AddOverlay("ITEM_FRAGILEDAMAGEBONUS_DESC", "使造成的伤害提高<style=cIsDamage>20%</style><style=cStack>(每层+20%)</style>。受到伤害导致生命值降到<style=cIsHealth>25%</style>以下时,该物品会<style=cIsUtility>损坏</style>。\n<style=cIsUtility>损坏的手表将在过关时修复</style>。", "zh-CN");AddOverlay("ITEM_HEADHUNTER_DESC", "获得所击败精英怪物身上的<style=cIsDamage>能力</style>,持续<style=cIsDamage>20秒</style><style=cStack>(每层增加10秒)</style>。", "zh-CN");AddOverlay("ITEM_HEALINGPOTION_DESC", "受到伤害导致<style=cIsHealth>生命值降到25%</style>以下时会<style=cIsUtility>消耗</style>该物品,并为你<style=cIsHealing>恢复</style><style=cIsHealing>最大生命值</style>的<style=cIsHealing>75%</style>。\n<style=cIsUtility>使用后的空瓶将在过关时重新填满</style>。", "zh-CN");AddOverlay("ITEM_HEALONCRIT_DESC", "获得" + 10.ToBaseWithStk(5).ToDmg("_%") + "的暴击几率。" + "击杀".ToDmg() + "敌人后使你恢复" + "最大生命值".ToHealing() + "的" + 0.02f.ToBaseAndStkPct().ToHealing() + ",若" + "暴击击杀".ToDmg() + "则" + "恢复量".ToHealing() + "将乘以" + "暴击倍率".ToDmg() + "。", "zh-CN");AddOverlay("ITEM_HEALWHILESAFE_DESC", "使脱离战斗状态下的<style=cIsHealing>基础生命值再生速度</style>增加" + 3.ToBaseAndStk().ToHealing("_hp/s") + ",外加<style=cIsHealing>基础生命值<color=yellow>百分比</color>再生速度</style>增加" + 0.015f.ToBaseAndStkPct().ToHealing("_hp/s") + "。", "zh-CN");AddOverlay("ITEM_ICERING_DESC", "充能完毕后,<style=cIsDamage>不低于" + 1f.ToBaseAndStkPct("(取双环中层数高的每层+_)") + "伤害的攻击</style>击中敌人时会产生一道" + "符文冰霜爆炸".ToIce() + "轰击敌人," + "减速".ToIce() + "周围敌人使其降低<style=cIsUtility>80%</style>的移动速度" + 4f.ToUtil("_秒") + ",合计造成" + 1f.ToBaseAndStkPct().ToDmg("_的总伤害") + "。充能时间<style=cIsUtility>10秒</style><style=cStack>(每双手环减少10%)</style>。<color=#FFFF00>工匠特殊效果:基础充能时间降低至1秒,并无视伤害要求。</color>", "zh-CN");AddOverlay("ITEM_IGNITEONKILL_DESC", "击败敌人时产生一次半径<style=cIsDamage>" + 12.ToBaseWithStk(6) + "米" + "(具体范围与敌人体型相关)".ToUtil() + "</style>的爆炸,造成" + 1.2f.ToDmgPct("_的基础伤害") + ",并<style=cIsDamage>点燃</style>所有被爆炸波及的敌人。<style=cIsDamage>点燃</style>合计可对敌人造成" + 0.6f.ToBaseAndStkPct().ToDmg("_的总伤害") + "。", "zh-CN");AddOverlay("ITEM_IMMUNETODEBUFF_DESC", "防止<style=cIsUtility>1<style=cStack>(每层+1)</style>个</style><style=cIsDamage>减益效果</style>并施加一道<style=cIsHealing>临时屏障</style>,数值为<style=cIsHealing>最大生命值</style>的<style=cIsHealing>10%</style>。每<style=cIsUtility>5</style>秒充能一次</style>。", "zh-CN");AddOverlay("ITEM_INFUSION_DESC", "每击败一名敌人后使" + "自身外加主人".ToHealing() + "(如果有)".ToStk() + "<style=cIsHealing>永久性</style>增加<style=cIsHealing>1点</style><style=cStack>(每层+1点)</style>最大生命值,最多增加<style=cIsHealing>自身等级x自身基础血量x" + 0.1f.ToPct() + "x全队层数</style>点。", "zh-CN");AddOverlay("ITEM_KNURL_DESC", "最大生命值".ToHealing() + "增加" + 40.ToBaseAndStk().ToHealing() + "点,外加升级获得的" + "最大生命值".ToHealing() + "增加" + 0.8f.ToBaseAndStkPct().ToHealing() + "。" + "基础生命值再生速度".ToHealing() + "增加" + 1.6f.ToBaseAndStk().ToHealing("_hp/s") + ",外加" + "基础生命值<color=yellow>百分比</color>再生速度".ToHealing() + "增加" + 0.01f.ToBaseAndStkPct().ToHealing("_hp/s") + "。", "zh-CN");AddOverlay("ITEM_LIGHTNINGSTRIKEONHIT_DESC", "命中敌人时有" + 9f.ToBaseAndStkBy逼近Pct().ToDmg() + "的几率向敌人的" + "雷电召唤池".ToLightning() + "中添加" + "1次雷击".ToLightning() + 0.5f.ToStk("(召唤间隔:_秒)") + ",合计造成" + 2.ToBaseAndStkPct().ToDmg("_的总伤害") + "。<color=#FFFF00>装卸工特殊效果:关于“雷霆拳套”(详情看 权杖 技能介绍)。</color>", "zh-CN");AddOverlay("ITEM_LUNARBADLUCK_DESC", "所有技能冷却时间缩短<style=cIsUtility>2</style><style=cStack>(每层+1)</style>秒。所有随机效果的概率降低<style=cIsUtility>25%</style>" + "(叠加公式:幸运降低概率 = 原概率x(运气/(|运气|+3)))".ToStk() + "。", "zh-CN");AddOverlay("ITEM_LUNARPRIMARYREPLACEMENT_DESC", "<style=cIsUtility>替换主要技能</style>为<style=cIsUtility>渴望凝视</style>。\n\n发射一批会延迟引爆的<style=cIsUtility>追踪碎片</style>,造成<style=cIsDamage>120%</style>的基础伤害。最多充能12次<style=cStack>(每层增加12次)</style>,2秒后重新充能<style=cStack>(每层增加2秒)</style>。\n<style=cIsLunar>异教徒:追踪能力加强。每层使技能冷却降低2秒。</style>", "zh-CN");AddOverlay("ITEM_LUNARSECONDARYREPLACEMENT_DESC", "<style=cIsUtility>将你的次要技能替换为</style><style=cIsUtility>万刃风暴</style>。\n\n充能并射出一发子弹,对附近的敌人造成<style=cIsDamage>每秒175%的伤害</style>,并在<style=cIsUtility>3</style>秒后爆炸,造成<style=cIsDamage>700%的伤害</style>" + "(异教徒:每层+50%爆炸范围)".ToLunar() + ",并使敌人<style=cIsDamage>定身</style><style=cIsUtility>3</style><style=cStack>(每层增加+3秒)</style>秒。5秒<style=cStack>(每层增加5秒)</style>后充能。\n<style=cIsLunar>异教徒:每层使攻击速度增加10%</style>。", "zh-CN");AddOverlay("ITEM_LUNARSPECIALREPLACEMENT_DESC", "<style=cIsUtility>将你的特殊技能替换为</style><style=cIsUtility>毁坏</style>。\n\n造成伤害可以施加一层<style=cIsDamage>毁坏</style>,持续10<style=cStack>(每层增加+10秒)秒</style>。启动此技能可以<style=cIsDamage>引爆</style>所有的毁坏层数,不限距离,并造成<style=cIsDamage>300%的伤害</style>,外加<style=cIsDamage>每层毁坏120%<style=cIsLunar>(异教徒:每层+60%)</style>的伤害</style>。8秒<style=cStack>(每层增加8秒)</style>后充能。<style=cIsLunar>异教徒:每层使最大生命值增加10%。</style>", "zh-CN");AddOverlay("ITEM_LUNARSUN_DESC", $"每<style=cIsUtility>{3.6f}</style><style=cStack>(每层-50%)</style>秒获得一个<style=cIsDamage>环绕运动的追踪炸弹</style>,最多可获得{3.ToBaseWithStk(1).ToUtil()}个炸弹,每个可造成{3.6f.ToBaseWithStkPct(1.8f).ToDmg()}的基础伤害。每{36f.ToUtil()}秒将其他一件随机物品<style=cIsUtility>转化</style>为该物品。", "zh-CN");AddOverlay("ITEM_LUNARSUN_PICKUP", "获得多个环绕运动的追踪炸弹。<color=#FF7F7F>每" + 36f.ToUtil() + "秒,将一件其他物品吸收并转化为自我中心。</color>", "zh-CN");AddOverlay("ITEM_LUNARUTILITYREPLACEMENT_DESC", "<style=cIsUtility>将你的辅助技能替换</style>为<style=cIsUtility>影逝</style>。\n\n隐去身形,进入<style=cIsUtility>隐形状态</style>并获得<style=cIsUtility>30%移动速度加成</style>。<style=cIsHealing>治疗</style><style=cIsHealing>25%<style=cStack>(每层增加25%)</style>的最大生命值</style>。持续3<style=cStack>(每层加3)</style>秒。\n<style=cIsLunar>异教徒:可通过技能按键切换形态。每层使移动速度增加10%。</style>", "zh-CN");AddOverlay("ITEM_LUNARWINGS_NAME", "特拉法梅的祝福", "zh-CN");AddOverlay("ITEM_LUNARWINGS_PICKUP", "一双翅膀。", "zh-CN");AddOverlay("ITEM_MISSILE_DESC", "有" + 9f.ToBaseAndStkBy逼近Pct().ToDmg() + "几率向" + "导弹发射池".ToUtil() + "里添加一枚导弹" + 1f.ToStk("(发射间隔:_秒)") + "。每枚合计造成" + 1f.ToBaseAndStkPct().ToDmg("_的总伤害") + "。", "zh-CN");AddOverlay("ITEM_MISSILEVOID_DESC", string.Format("获得一个相当于你最大生命值<style=cIsHealing>{0}%</style>的<style=cIsHealing>护盾</style>。命中敌人时有{1}x{2}几率{3}向敌人发射{4}发虾米{5},合计造成{6}x{7}。<style=cIsVoid>使所有AtG导弹MK.1无效化</style>。", 10, "护盾/总护盾".ToHealing(), "100%".ToDmg(), "<style=cIsUtility>(此处忽略触发系数)</style>", "1".ToDmg(), 0.2f.ToStk("(发射间隔:_秒)"), "护盾/总护盾".ToHealing(), 0.5f.ToBaseAndStkPct().ToDmg("_的总伤害")), "zh-CN");AddOverlay("ITEM_MOVESPEEDONKILL_DESC", "击杀敌人会使<style=cIsUtility>移动速度</style>提高<style=cIsUtility>125%</style>,在<style=cIsUtility>1</style><style=cStack>(每层+0.5)</style>秒内逐渐失效。<color=#FFFF00>女猎人特殊效果:锁敌距离增加10米" + "(每层+10米)".ToStk() + "。</color>", "zh-CN");AddOverlay("ITEM_NEARBYDAMAGEBONUS_DESC", $"对<style=cIsDamage>{13}米</style>内的敌人伤害增加{20}%<style=cStack>(每层+{20}%)</style>.", "zh-CN");AddOverlay("ITEM_NOVAONHEAL_DESC", $"将{1.ToBaseAndStkPct().ToHealing()}的治疗量储存为<style=cIsHealing>灵魂能量</style>,最大储量等同于<style=cIsHealing>最大生命值</style>的{1f.ToHealPct()}。当<style=cIsHealing>灵魂能量</style>达到<style=cIsHealing>最大生命值</style>的{9f.ToBaseAndStkBy逼近Pct().ToHealing()}时,自动向周围<style=cIsDamage>{66.6f}</style>米内的敌人<style=cIsDamage>发射一颗头骨</style>,造成相当于{1f.ToDmgPct()}<style=cIsHealing>灵魂能量</style>的伤害。", "zh-CN");AddOverlay("ITEM_PARENTEGG_DESC", "在<style=cIsDamage>受到伤害时</style>回复" + 20f.ToBaseAndStk().ToHealing("_点") + ",外加<style=cIsHealing>受到伤害x" + 0.01f.ToBaseAndStkPct() + "</style>的生命值。</color><color=#FFFF00>(圣骑士)太阳特殊效果:火焰伤害增加" + 1.ToBaseAndStkPct() + "。</color>", "zh-CN");AddOverlay("ITEM_PERMANENTDEBUFFONHIT_DESC", "命中敌人时有<style=cIsDamage>100%</style>几率使<style=cIsDamage>护甲</style>永久降低<style=cIsDamage>2点</style><style=cStack>(每层+2点)</style>。", "zh-CN");AddOverlay("ITEM_PERSONALSHIELD_DESC", "获得一个相当于你最大生命值<style=cIsHealing>8%</style><style=cStack>(每层+8%)</style>的<style=cIsHealing>护盾</style>。脱险后可重新充能。\n<style=cIsLunar>(<style=cIsHealing>护盾</style>受到的<style=cIsDamage>Dot伤害</style>降低80%,成为完美的象征再降低10%)</style>", "zh-CN");AddOverlay("ITEM_RANDOMLYLUNAR_DESC", "月球切片的可用次数增加" + 1.ToBaseAndStk().ToUtil("_次") + ",但使用价格提升速度" + "增加".ToDeath() + 1.ToBaseAndStk().ToLunar() + "月球币".ToLunar() + "。", "zh-CN");AddOverlay("ITEM_RANDOMLYLUNAR_PICKUP", "增加月球切片的使用次数,但会使其价格提升速度增加。", "zh-CN");AddOverlay("ITEM_RELICENERGY_DESC", "似乎没什么用。<style=cIsUtility>可能会有一些用处...?</style><style=cIsUtility>(此物品可用于充能特殊传送器)</style>", "zh-CN");AddOverlay("ITEM_REPULSIONARMORPLATE_DESC", "所有<style=cIsDamage>传入伤害</style>减少<style=cIsDamage>5</style>点<style=cStack>(每层+5点)</style>,但不能减少到<style=cIsDamage>1以下</style>。<color=#FFFF00>工程师及其炮塔特殊效果:护甲增加<style=cIsDamage>10</style>点<style=cStack>(每层+10点)</style>。</color>", "zh-CN");AddOverlay("ITEM_SAGESBOOK_DESC", "你的过去将变得...<style=cIsUtility>熟悉</style>...<style=cIsUtility>(若在游戏结束时持有此物品,会使下一把游戏种子和这把相同)</style>", "zh-CN");AddOverlay("ITEM_SECONDARYSKILLMAGAZINE_DESC", "为<style=cIsUtility>次要技能</style>增加<style=cIsUtility>1次</style><style=cStack>(每层增加1次)</style>充能。<color=#FFFF00>磁轨炮手特殊效果:关于上弹(详情看技能词条)。</color><color=#FFFF00>狙击手特殊效果:关于瞄准射击(详情看技能词条)。</color>", "zh-CN");AddOverlay("ITEM_SEED_DESC", "击中敌人时<style=cIsHealing>恢复</style>等同于你造成<style=cIsDamage>伤害</style>" + 0.01f.ToBaseAndStkPct().ToHealing() + "的生命值。\n<style=cStack>吸血(计算公式) = Sqrt([伤害] x " + 0.01f.ToPct() + ")([伤害] x " + 0.01f.ToPct() + "开平方根)</style>", "zh-CN");AddOverlay("ITEM_SHOCKNEARBY_DESC", "发射<style=cIsDamage>电流</style>,每<style=cIsDamage>0.5秒</style>对<style=cIsDamage>3名</style><style=cStack>(每层增加2名)</style>敌人造成<style=cIsDamage>200%</style>的基础伤害。特斯拉线圈每<style=cIsDamage>10秒</style>关闭一次。<color=#FFFF00>装卸工特殊效果:关于“M551电塔”(详情看技能介绍)。</color>", "zh-CN");AddOverlay("ITEM_SIPHONONLOWHEALTH_DESC", "在战斗状态下," + 15.ToBaseWithStk(5).ToDmg("_米") + "范围内距离你最近的" + 1.ToBaseAndStk().ToUtil() + "个敌人会与你“拴”在一起,对其造成每秒" + 1.5f.ToBaseAndStkPct().ToDmg("_的基础伤害") + ",施加<style=cIsDamage>焦油</style>效果,造成伤害的<style=cIsHealing>100%</style>转化为对你的<style=cIsHealing>治疗量</style>。", "zh-CN");AddOverlay("ITEM_SLOWONHITVOID_DESC", "命中敌人时有<style=cIsUtility>5%</style><style=cStack>(每层+5%)</style>几率使敌人<style=cIsDamage>定身</style><style=cIsUtility>1秒</style><style=cStack>(每层+1秒)</style>,但是对" + "Boss".ToDmg() + "和<style=cIsVoid>虚空生物</style><style=cDeath>无效</style>。<style=cIsVoid>使所有时空装置无效化</style>。", "zh-CN");AddOverlay("ITEM_SPRINTWISP_DESC", "奔跑时,每" + 1f.ToUtil() + "秒向" + SprintWispBodyBehavior.searchRadius.ToDmg("_米") + "内的敌人发射一道<style=cIsDamage>追踪幽魂</style>,造成" + SprintWispBodyBehavior.damageCoefficient.ToBaseAndStkPct().ToDmg("_的伤害") + "。发射速率随<style=cIsUtility>移动速度</style>增加。", "zh-CN");AddOverlay("ITEM_STICKYBOMB_DESC", "命中敌人时有<style=cIsDamage>5%</style><style=cStack>(每层增加5%)</style>的几率向敌人的" + "黏弹喷泉".ToDmg() + "中添加" + "1颗黏弹".ToDmg() + 0.1f.ToStk("(喷射间隔:_秒)") + ",爆炸时合计造成" + 1f.ToDmgPct() + "伤害。", "zh-CN");AddOverlay("ITEM_STUNCHANCEONHIT_DESC", "命中时有<style=cIsUtility>5%</style><style=cStack>(每层+5%)</style>的几率<style=cIsUtility>眩晕</style>敌人,持续<style=cIsUtility>2秒</style>。<color=#FFFF00>多功能枪兵特殊效果:关于“爆破筒”(详情看技能介绍)。</color>", "zh-CN");AddOverlay("ITEM_SUNBLADE_DESCRIPTION", "第一次攻击会<style=cIsDamage>点燃</style>敌人,造成<style=cIsDamage>1500%</style>的基础伤害。之后30秒内,对该敌人的每次攻击都会<style=cIsDamage>点燃</style>它,造成<style=cIsDamage>100%</style><style=cStack>(每层+100%)</style>基础伤害。", "zh-CN");AddOverlay("ITEM_SYRINGE_DESC", "使<style=cIsDamage>攻击速度</style>提高<style=cIsDamage>15%<style=cStack>(每层增加15%)</style></style>。<color=#FFFF00>指挥官特殊效果:额外使攻速,移速和最大生命值增加3%<style=cStack>(每层+3%)</style>。</color>", "zh-CN");AddOverlay("ITEM_THORNS_DESC", "受伤时弹射出1发" + "剃刀".ToDmg() + "还击攻击者,若没有,则弹射到" + 20.ToBaseWithStk(10).ToDmg("_米") + "内最近的敌人。合计造成<style=cIsDamage>受到的伤害的" + 2f.ToBaseWithStkPct(2f).ToDmg("_的总伤害") + "</style>。" + 0.1f.ToStk("(发射间隔:_秒)"), "zh-CN");AddOverlay("ITEM_TITANGOLDDURINGTP_DESC", "在传送器场景中召唤<style=cIsDamage>奥利雷奥尼特</style>,它具有<style=cIsDamage>100%<style=cStack>(每层增加100%)</style>伤害</style>和<style=cIsHealing>100%<style=cStack>(每层增加100%)</style>生命值</style>。", "zh-CN");AddOverlay("ITEM_TOOTH_DESC", "击败敌人后掉落一个<style=cIsHealing>治疗球</style>,拾取后恢复<style=cIsHealing>8</style>点外加等同于<style=cIsHealing>最大生命值</style><style=cIsHealing>2%<style=cStack>(每层+2%)</style></style>的生命值。<color=#FFFF00>呛鼻毒师特殊效果:关于“贪婪撕咬”(详情看技能介绍)。</color>", "zh-CN");AddOverlay("ITEM_TPHEALINGNOVA_DESC", "在传送事件中释放<style=cIsHealing>1次</style><style=cStack>(每层增加1次)</style><style=cIsHealing>治疗新星</style>,<style=cIsHealing>治疗</style>传送器附近所有友方,使他们恢复<style=cIsHealing>50%</style>的最大生命值。在充能区域内产生" + "治疗区域".ToHealing() + ",每秒恢复友方单位" + 0.02f.ToBaseAndStkPct().ToHealing() + "的最大生命值。<color=#FFFF00>雷克斯特殊效果:治疗效果增加20%" + "(每层+20%)".ToStk() + "。</color>", "zh-CN");AddOverlay("ITEM_UTILITYSKILLMAGAZINE_DESC", "为<style=cIsUtility>辅助技能</style>增加<style=cIsUtility>2次</style><style=cStack>(每层增加2次)</style>充能。<style=cIsUtility>使辅助技能的冷却时间减少</style><style=cIsUtility>33%</style>。<color=#FFFF00>船长特殊效果:使UES顺风号等待时间缩短33%<style=cStack>(每层+33%)</style>。</color>", "zh-CN");AddOverlay("ITEM_WARCRYONMULTIKILL_DESC", "<style=cIsDamage>击杀敌人</style>会使你获得<style=cIsDamage>狂热</style>增益,最高" + 3.ToBaseWithStk(2).ToUtil("_层") + ",每层持续" + 4f.ToDmg("_秒") + "。每层<style=cIsDamage>狂热</style>可使<style=cIsDamage>攻击速度</style>提高" + 0.1f.ToDmgPct() + ",使<style=cIsUtility>移动速度</style>提高" + 0.1f.ToPct().ToUtil() + "。", "zh-CN");string[] obj = new string[6] { "<style=cKeywordName>主动上弹</style><style=cSub>开火后给你的磁轨炮上弹(按", null, null, null, null, null };KeyboardShortcut value = ModConfig.ReloadKey.Value;obj[1] = ((KeyboardShortcut)(ref value)).MainKey.ToUtil();obj[2] = "键也可进入上弹)。<style=cIsDamage>完美上弹</style>后,下一发射弹额外造成";obj[3] = "50%".ToDmg();obj[4] = "(每层备用弹夹+10%)".ToStk();obj[5] = "伤害。";AddOverlay("KEYWORD_ACTIVERELOAD", string.Concat(obj), "zh-CN");AddOverlay("KEYWORD_ARC", "<style=cKeywordName>击穿</style><style=cSub>在最多4个敌人之间形成电弧,每次造成30%的伤害。</style>", "zh-CN");AddOverlay("KEYWORD_ENTANGLE", "<style=cKeywordName>纠缠</style><style=cSub>攻击造成<style=cIsVoid>纠缠</style>减益,当此攻击击中被<style=cIsVoid>纠缠</style>的敌人时,其他所有被<style=cIsVoid>纠缠</style>敌人将同时受到<style=cIsVoid>" + FireWeave.damageCoefficient.ToDmgPct() + "基础伤害</style>。</style>");AddOverlay("KEYWORD_FLEETING", "<style=cKeywordName>一闪</style><style=cSub><style=cIsDamage>攻速</style>转化为<style=cIsDamage>技能伤害</style>。", "zh-CN");AddOverlay("KEYWORD_FRICTIONLESS", "<style=cKeywordName>绝对光滑</style><style=cSub>无伤害衰减</style>。", "zh-CN");AddOverlay("KEYWORD_SOULROT", "<style=cKeywordName>灵魂之痛</style><style=cSub>" + "忽略护甲".ToDeath() + ",每秒<style=cIsVoid>至少</style>造成敌人<style=cIsHealing>最大生命值</style>的<style=cIsVoid>2.5%</style>的伤害,持续" + "20秒".ToDmg() + "后消失。</style>", "zh-CN");AddOverlay("LOADER_SPECIAL_ALT_DESCRIPTION", "<style=cIsUtility>重型</style>。" + "眩晕".ToDmg() + "。用重拳砸向地面,造成" + 10f.ToDmgPct("_的范围伤害") + "。", "zh-CN");AddOverlay("LOADER_SPECIAL_DESCRIPTION", "扔出飘浮电塔,可<style=cIsDamage>电击</style>周围" + 25f.ToBaseAndStk("(每层不稳定的特斯拉线圈+_)").ToUtil("_米") + "内最多" + 3.ToBaseAndStk("(每层不稳定的特斯拉线圈+_)").ToDmg("_名") + "敌人,电流最多可弹射" + 1.ToBaseAndStk("(每层不稳定的特斯拉线圈+_)").ToDmg("_次") + ",造成" + 1f.ToDmgPct("_的伤害") + "。可被<style=cIsUtility>格挡</style>。", "zh-CN");AddOverlay("LOADER_UTILITY_ALT1_DESCRIPTION", "<style=cIsUtility>重型</style>。发动一次<style=cIsUtility>单体攻击</style>直拳,造成" + Mathf.Pow(3.5f, 1.5f).ToDmgPct("_的基础伤害") + ",<style=cIsDamage>震荡</style>锥形区域内的所有敌人并合计造成" + 0.5f.ToDmgPct("_的总伤害") + "。", "zh-CN");AddOverlay("LOADER_UTILITY_DESCRIPTION", "<style=cIsUtility>重型</style>。发动一次<style=cIsUtility>穿透</style>直拳,造成" + Mathf.Pow(1f, 1.5f).ToDmgPct() + "-" + Mathf.Pow(4.5f, 1.5f).ToDmgPct() + "的<style=cIsDamage>基础伤害</style>。", "zh-CN");AddOverlay("LUNARVAULT_NAME", "月球库", "zh-CN");AddOverlay("MAGE_PRIMARY_FIRE_DESCRIPTION", "<style=cIsDamage>点燃</style>。发射一枚火炎弹,造成<style=cIsDamage>220%的伤害</style>。</style>", "zh-CN");AddOverlay("MAGE_PRIMARY_LIGHTNING_DESCRIPTION", "发射一枚闪电弹,造成<style=cIsDamage>300%的伤害</style>并<style=cIsDamage>引爆</style>小片区域。</style>", "zh-CN");AddOverlay("MAGE_SECONDARY_ICE_DESCRIPTION", "<style=cIsUtility>冰冻</style>。使用拥有<style=cIsDamage>穿透</style>效果的纳米枪发动攻击,充能后能造成" + 4f.ToDmgPct() + "-" + 16f.ToDmgPct("_的伤害") + "。爆炸后留下一个<style=cIsUtility>冰冻炸弹</style>,2秒后爆炸并<style=cIsUtility>冰冻</style>附近" + "12米".ToUtil() + "的敌人,合计造成" + "100%".ToDmg("_的总伤害") + "。", "zh-CN");AddOverlay("MAGE_SECONDARY_LIGHTNING_DESCRIPTION", string.Format("<style=cIsDamage>眩晕</style>。发射一枚纳米炸弹,如果充能将造成{0}-{1}。飞行期间电击周围<style=cIsUtility>{2}</style>米内最多{3}敌人,每秒合计造成{4}。", 5f.ToDmgPct(), 25f.ToDmgPct("_的伤害"), 25f, 10.ToDmg("_个"), 0.6f.ToDmgPct("_的伤害")), "zh-CN");AddOverlay("MAGE_SPECIAL_FIRE_DESCRIPTION", "<style=cIsDamage>点燃</style>。灼烧面前的所有敌人,对其造成" + (Flamethrower.totalDamageCoefficient / Flamethrower.baseFlamethrowerDuration).ToDmgPct("每秒_的伤害") + "。", "zh-CN");AddOverlay("MAGE_UTILITY_ICE_DESCRIPTION", "<style=cIsUtility>冰冻</style>。创造一道能够对敌人造成" + PrepWall.damageCoefficient.ToDmgPct() + "伤害的屏障。", "zh-CN");AddOverlay("MERC_PRIMARY_DESCRIPTION", "<style=cIsDamage>一闪</style>。<style=cIsUtility>灵巧</style>。向前挥砍并造成<style=cIsDamage>130%的伤害</style>。第三次攻击的范围将会变大并<style=cIsUtility>暴露</style>敌人。", "zh-CN");AddOverlay("MERC_SECONDARY_ALT1_DESCRIPTION", "<style=cIsDamage>一闪</style>。释放一个裂片上勾拳,造成" + Uppercut.baseDamageCoefficient.ToDmgPct("_的伤害") + ",并将你送到半空。", "zh-CN");AddOverlay("MERC_SECONDARY_DESCRIPTION", "<style=cIsDamage>一闪</style>。快速横斩两次,造成<style=cIsDamage>2x200%的伤害</style>,若位于空中,则改为竖斩。", "zh-CN");AddOverlay("MERC_SPECIAL_ALT1_DESCRIPTION", "<style=cIsDamage>一闪</style>。发射一次刀刃之风,最多可对<style=cIsDamage>3</style>名敌人造成<style=cIsDamage>8x" + 1.ToDmgPct("_的伤害") + "</style>。最后一次打击将<style=cIsUtility>暴露</style>敌人。", "zh-CN");AddOverlay("MERC_SPECIAL_DESCRIPTION", "<style=cIsDamage>一闪</style>。<style=cIsUtility>重型</style>。瞄准距离最近的敌人,攻击被瞄准的敌人可对其重复造成" + Evis.damageCoefficient.ToDmgPct("_的伤害") + "。<style=cIsUtility>过程中无法被攻击,跳跃键可提前退出技能。</style>", "zh-CN");AddOverlay("MERC_UTILITY_ALT1_DESCRIPTION", "<style=cIsUtility>重型</style>。<style=cIsDamage>眩晕</style>。向前冲锋,造成<style=cIsDamage>700%的伤害</style>并在<style=cIsUtility>1秒</style>后<style=cIsUtility>暴露</style>敌人。", "zh-CN");AddOverlay("MERC_UTILITY_DESCRIPTION", "<style=cIsUtility>重型</style>。<style=cIsDamage>眩晕</style>。向前冲锋并造成<style=cIsDamage>300%的伤害</style>。只要命中敌人,<style=cIsDamage>就可以再次发起冲锋</style>,最多<style=cIsDamage>3</style>次。", "zh-CN");AddOverlay("NIX_SKIN_LAZYHUNTRESSSKIN_NAME", "兔女郎", "zh-CN");AddOverlay("NIX_SKIN_MOBFIENDSKIN_NAME", "怪人", "zh-CN");AddOverlay("NIX_SKIN_NECROBUNNYSKIN_NAME", "修女", "zh-CN");AddOverlay("NIX_SKIN_TECHNOMERCSKIN_NAME", "女剑圣", "zh-CN");AddOverlay("OBJECTIVE_BATTERIES_INSERTED_TOKEN", "给燃料组充电 ({0}/{1})", "zh-CN");AddOverlay("POTMOBILEMONSTER_BODY_NAME", "生锅", "zh-CN");AddOverlay("RAILGUNNER_ACTIVE_RELOAD_DESCRIPTION", "在恰到好处的时机上弹可更快恢复,并使你下一发射弹额外造成" + "50%".ToDmg() + "(每层备用弹夹+10%)".ToStk() + "伤害。", "zh-CN");AddOverlay("RAILGUNNER_PRIMARY_DESCRIPTION", "发射主动追踪弹药,造成<style=cIsDamage>100%的伤害</style>。", "zh-CN");AddOverlay("RAILGUNNER_SECONDARY_ALT_DESCRIPTION", "手动上弹".ToUtil() + "。启动你的<style=cIsUtility>近程瞄准镜</style>,高亮显示<style=cIsDamage>弱点</style>,并将你的武器转化为一门可造成" + 4f.ToDmgPct() + "伤害的快速磁轨炮。", "zh-CN");AddOverlay("RAILGUNNER_SECONDARY_DESCRIPTION", "主动上弹".ToUtil() + "。启动你的<style=cIsUtility>远程瞄准镜</style>,高亮显示<style=cIsDamage>弱点</style>,并将你的武器转化为一门可造成" + 8f.ToDmgPct() + "伤害的穿刺磁轨炮。", "zh-CN");AddOverlay("RAILGUNNER_SNIPE_CRYO_DESCRIPTION", "<style=cIsUtility>冰冻</style>。发射一枚超低温射弹,造成" + 20f.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("RAILGUNNER_SNIPE_HEAVY_DESCRIPTION", "发射一枚重型射弹,造成" + 8f.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("RAILGUNNER_SNIPE_LIGHT_DESCRIPTION", "发射一枚轻型射弹,造成" + 4f.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("RAILGUNNER_SNIPE_SUPER_DESCRIPTION", "发射一枚造成" + 30f.ToDmgPct("_的伤害") + "且具有" + 1.5f.ToDmg() + "倍" + "暴击伤害".ToDmg() + "的超载射弹</style>。", "zh-CN");AddOverlay("RAILGUNNER_SPECIAL_ALT_DESCRIPTION", "<style=cIsUtility>冰冻</style>。发射<style=cIsDamage>具有穿透效果</style>的子弹,造成" + 20f.ToDmgPct("_的伤害") + "。", "zh-CN");AddOverlay("RAILGUNNER_SPECIAL_DESCRIPTION", string.Format("发射一枚<style=cIsDamage>具有穿刺效果,</style>造成{0}且具有{1}倍暴击伤害</style>的超载射弹。之后,<style=cIsHealth>你的所有武器都将失灵</style>,持续<style=cIsHealth>{2}</style>秒。", 30f.ToDmgPct("_的伤害"), 1.5f.ToDmg(), 5), "zh-CN");AddOverlay("RAILGUNNER_UTILITY_ALT_DESCRIPTION", "扔出一部装置,该装置可使附近的" + "敌人减速80%,射弹减速99%".ToUtil() + "。", "zh-CN");AddOverlay("RAILGUNNER_UTILITY_DESCRIPTION", $"扔出一部装置,该装置可将你和附近所有敌人<style=cIsUtility>推开</style>。最多可拥有{2}部。", "zh-CN");AddOverlay("SANCTUMWISP_BODY_NAME", "神圣幽魂", "zh-CN");AddOverlay("SHRINE_AEGIS_NAME", "灾难神龛", "zh-CN");AddOverlay("SIXFEARS7_SKIN_BLACKRID_NAME", "黑暗", "zh-CN");AddOverlay("SIXFEARS7_SKIN_RADIOACRID_NAME", "光明", "zh-CN");AddOverlay("SIXFEARS7_SKIN_VOIDCRID_NAME", "虚空", "zh-CN");AddOverlay("SPIKESTRIPCONTENT_EXPANSION_DESCRIPTION", "将'Spikestrip 2.0'的内容添加到游戏。", "zh-CN");AddOverlay("SPIKESTRIPSKILL_" + ((SpikestripAltSkillsBase<Weave>)(object)SpikestripContentBase<Weave>.instance).SkillToken + "_DESCRIPTION", "<style=cIsVoid>纠缠</style>。快速攻击敌人,每次造成<style=cIsDamage>" + FireWeave.damageCoefficient.ToDmgPct("_的伤害") + "</style>。");AddOverlay("SPIKESTRIPSKILL_" + ((SpikestripAltSkillsBase<Weave>)(object)SpikestripContentBase<Weave>.instance).SkillToken + "_NAME", "「编织」");AddOverlay("SPIKESTRIPSKILL_DEEPROT_DESCRIPTION", "<style=cIsVoid>虚 空 馈 赠</style>:<style=cIsHealing>毒化</style>攻击改为叠加<style=cIsVoid>虚空之毒</style>,使<style=cIsVoid>速度减慢10%</style>。当<style=cIsVoid>虚空之毒</style>叠加的层数达到<style=cIsVoid>灵魂之痛</style>层数的<style=cIsVoid>3</style>倍时,所有<style=cIsVoid>虚空之毒</style>将转化为<style=cIsVoid>灵魂之痛</style>。此外,所有<style=cArtifact>虚空</style>攻击都有几率叠加<style=cIsVoid>虚空之毒</style>。", "zh-CN");AddOverlay("SPIKESTRIPSKILL_DEEPROT_NAME", "腐朽", "zh-CN");AddOverlay("STAGE_DRYBASIN_NAME", "干旱盆地", "zh-CN");AddOverlay("STAGE_DRYBASIN_SUBTITLE", "废弃通道", "zh-CN");AddOverlay("STAGE_FORGOTTENHAVEN_NAME", "遗忘天堂", "zh-CN");AddOverlay("STAGE_FORGOTTENHAVEN_SUBTITLE", "废弃杰作", "zh-CN");AddOverlay("STAGE_WEATHEREDSATELLITE_NAME", "沉睡卫星", "zh-CN");AddOverlay("STAGE_WEATHEREDSATELLITE_SUBTITLE", "高架整体", "zh-CN");AddOverlay("TOOLBOT_PRIMARY_ALT1_DESCRIPTION", "发射1条具有穿透效果的钢筋,造成<style=cIsDamage>600%</style>的伤害。", "zh-CN");AddOverlay("TOOLBOT_PRIMARY_ALT3_DESCRIPTION", "锯伤周围敌人,造成<style=cIsDamage>每秒1000%的伤害</style>。", "zh-CN");AddOverlay("TOOLBOT_PRIMARY_DESCRIPTION", "快速发射钉子,造成<style=cIsDamage>70%的伤害</style>。最后一次性发射<style=cIsDamage>12</style>枚伤害为<style=cIsDamage>70%的钉子。<style=cStack>(每发射1枚钉子+0.07米射程,松开后清零)</style>", "zh-CN");AddOverlay("TOOLBOT_SECONDARY_DESCRIPTION", "<style=cIsDamage>眩晕</style>。发射一枚造成<style=cIsDamage>220%伤害</style>的爆破筒。将分裂为造成<style=cIsDamage>5" + "(每层眩晕手雷+5)".ToStk() + "x44%伤害</style>以及<style=cIsDamage>眩晕</style>效果的小炸弹。", "zh-CN");AddOverlay("TREEBOT_SPECIAL_DESCRIPTION", "<style=cIsHealth>25%生命值</style>。发射一朵会<style=cIsDamage>扎根</style>并造成<style=cIsDamage>200%伤害</style>的花朵。每命中一个目标便会对你治疗" + TreebotFlower2Projectile.healthFractionYieldPerHit.ToHealPct() + "的生命值。", "zh-CN");AddOverlay("TREEBOT_UTILITY_ALT1_DESCRIPTION", FirePlantSonicBoom.healthCostFraction.ToPct().ToHealth() + "生命值。发射一次<style=cIsUtility>音爆</style>并对敌人造成" + 5f.ToDmgPct("_的伤害") + "。每命中一个目标便会对你治疗" + FirePlantSonicBoom.healthFractionPerHit.ToHealPct() + "的生命值。", "zh-CN");AddOverlay("VOIDCRID_NULLBEAM", "<style=cArtifact>「虚空光束』</style>", "zh-CN");AddOverlay("VOIDCRID_NULLBEAM_DESC", "<style=cArtifact>虚空</style>。从<style=cIsVoid>虚空</style>中汲取力量,发射中距离<style=cIsVoid>虚空光束</style>攻击敌人,造成<style=cIsDamage>900%</style>的伤害,按住可增加发射的持续时间。每一击都有概率<style=cIsVoid>定身</style>敌人。", "zh-CN");AddOverlay("VOIDCRID_PASSIVE", "<style=cArtifact>虚空</style>克里德", "zh-CN");AddOverlay("VOIDCRID_PASSIVE_DESC", "所有<style=cArtifact>虚空</style>攻击都有几率<style=cArtifact>定身</style>敌人。(如果选择了“腐朽”被动,则额外叠加<style=cWorldEvent>虚空之毒</style>减益)", "zh-CN");AddOverlay("VOIDCRID_VOIDDRIFT", "<style=cArtifact>「虚无漂流』</style>", "zh-CN");AddOverlay("VOIDCRID_VOIDRIFT_DESC", "<style=cArtifact>虚空</style>。<style=cIsDamage>眩晕</style>。遁入<style=cIsVoid>虚空</style>,眩晕周围敌人并造成<style=cIsDamage>400%</style>的伤害,退出时再次眩晕周围敌人并造成<style=cIsDamage>400%</style>的伤害,有概率<style=cIsVoid>定身</style>敌人。", "zh-CN");AddOverlay("VOIDSURVIVOR_PRIMARY_ALT_DESCRIPTION", "<style=cKeywordName>腐化升级</style><style=cSub>发射一束造成2000%伤害的短程光束。</style>", "zh-CN");AddOverlay("VOIDSURVIVOR_SECONDARY_ALT_DESCRIPTION", "<style=cKeywordName>腐化升级</style><style=cSub>发射一枚造成2500%伤害的黑洞炸弹,半径变为25米。</style>", "zh-CN");AddOverlay("VOIDSURVIVOR_SECONDARY_DESCRIPTION", "充能一枚虚空炸弹,造成<style=cIsDamage>" + 4.44f.ToDmgPct() + "伤害</style>。完全充能时可以变成爆炸性虚空炸弹,造成<style=cIsDamage>" + 44.44f.ToDmgPct() + "伤害</style>。", "zh-CN");AddOverlay("VOIDSURVIVOR_SECONDARY_UPRADE_TOOLTIP", "<style=cKeywordName>腐化升级</style><style=cSub>转化成能造成2500%伤害的黑洞炸弹,半径变为25米。</style>", "zh-CN");AddOverlay("VOIDSURVIVOR_SPECIAL_ALT_DESCRIPTION", "<style=cKeywordName>腐化升级</style><style=cSub>消耗25%的生命值来获得25%的腐化。</style>", "zh-CN");AddOverlay("VOIDSURVIVOR_UTILITY_ALT_DESCRIPTION", "<style=cIsUtility>消失</style>进入虚空,<style=cIsUtility>向前沿弧线</style>移动,同时<style=cIsUtility>清除所有减益效果</style>。", "zh-CN");AddOverlay("VV_ITEM_BROKEN_MESS_NAME", "破碎的混合物", "zh-CN");AddOverlay("VV_ITEM_EMPTY_VIALS_NAME", "空瓶", "zh-CN");AddOverlay("VV_OBJECTIVE_SHELL", "充能<style=cIsVoid>失落的信标</style> ({0}%)", "zh-CN");AddOverlay("VV_OBJECTIVE_SHELL_OOB", "进入<style=cIsVoid>失落的信标范围!</style> ({0}%)", "zh-CN");AddOverlay("VV_SHELL_CONTEXT", "激活失落的信标..?", "zh-CN");AddOverlay("VV_ITEM_" + ((ItemBase)ItemBase<ExeBlade>.instance).ItemLangTokenName + "_DESCRIPTION", "你的<style=cIsDamage>击杀效果</style>在杀死一个精英后会额外发生<style=cIsDamage>1</style>次<style=cStack>(每层+1次)</style>。另外会产生半径<style=cIsDamage>12</style>米的<style=cIsDamage>爆炸</style>,造成<style=cIsDamage

TheMysticSword-BulwarksHaunt/BulwarksHaunt.dll

Decompiled 6 days ago

Download (224.0KB)

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.Collections.ObjectModel;using System.Diagnostics;using System.Globalization;using System.IO;using System.Linq;using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.Serialization;using System.Runtime.Versioning;using System.Security;using System.Security.Permissions;using System.Text;using BepInEx;using BepInEx.Bootstrap;using BepInEx.Configuration;using BepInEx.Logging;using BtpTweak;using BtpTweak.Utils;using BulwarksHaunt.Items;using EntityStates;using EntityStates.GameOver;using EntityStates.Interactables.MSObelisk;using HG;using IL.RoR2.Navigation;using Mono.Cecil.Cil;using MonoMod.Cil;using Moonstorm.Components;using MysticsRisky2Utils;using MysticsRisky2Utils.BaseAssetTypes;using MysticsRisky2Utils.ContentManagement;using MysticsRisky2Utils.SoftDependencies;using Newtonsoft.Json;using On.EntityStates.Interactables.MSObelisk;using On.RoR2;using On.RoR2.Navigation;using On.RoR2.UI;using On.RoR2.UI.LogBook;using ProperSave;using R2API;using R2API.Networking;using R2API.Networking.Interfaces;using R2API.Utils;using RiskOfOptions;using RiskOfOptions.OptionConfigs;using RiskOfOptions.Options;using RoR2;using RoR2.Achievements;using RoR2.CharacterAI;using RoR2.ContentManagement;using RoR2.ExpansionManagement;using RoR2.Navigation;using RoR2.Skills;using RoR2.UI;using RoR2.UI.LogBook;using TMPro;using UnityEngine;using UnityEngine.AddressableAssets;using UnityEngine.Networking;using UnityEngine.Rendering.PostProcessing;using UnityEngine.SceneManagement;using UnityEngine.UI;[assembly: CompilationRelaxations(8)][assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)][assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)][assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")][assembly: AssemblyCompany("BulwarksHaunt")][assembly: AssemblyConfiguration("Release")][assembly: AssemblyFileVersion("1.0.0.0")][assembly: AssemblyInformationalVersion("1.0.0+9f8e14e474e6691dce489a5ea304f5e6e41479e9")][assembly: AssemblyProduct("BulwarksHaunt")][assembly: AssemblyTitle("BulwarksHaunt")][assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)][assembly: AssemblyVersion("1.0.0.0")][module: UnverifiableCode]namespace MysticsRisky2Utils.SoftDependencies{internal static class RiskOfOptionsDependencyInternal{public static void RegisterModInfo(string modGUID, string modName, string description, Sprite iconSprite){ModSettingsManager.SetModDescription(description, modGUID, modName);if ((Object)(object)iconSprite != (Object)null){ModSettingsManager.SetModIcon(iconSprite, modGUID, modName);}}public static void AddOptionInt(string modGUID, string modName, ConfigEntry<int> configEntry, int min, int max, bool restartRequired){//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_000d: 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_0022: Expected O, but got Unknown//IL_001d: Unknown result type (might be due to invalid IL or missing references)//IL_0029: Expected O, but got UnknownModSettingsManager.AddOption((BaseOption)new IntSliderOption(configEntry, new IntSliderConfig{min = min,max = max,restartRequired = restartRequired}), modGUID, modName);}public static void AddOptionFloat(string modGUID, string modName, ConfigEntry<float> configEntry, float min, float max, bool restartRequired){//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_000d: 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_0020: Unknown result type (might be due to invalid IL or missing references)//IL_002d: Expected O, but got Unknown//IL_0028: Unknown result type (might be due to invalid IL or missing references)//IL_0034: Expected O, but got UnknownModSettingsManager.AddOption((BaseOption)new StepSliderOption(configEntry, new StepSliderConfig{min = min,max = max,increment = 0.01f,restartRequired = restartRequired}), modGUID, modName);}public static void AddOptionBool(string modGUID, string modName, ConfigEntry<bool> configEntry, bool restartRequired){//IL_0002: Unknown result type (might be due to invalid IL or missing references)//IL_000e: Expected O, but got UnknownModSettingsManager.AddOption((BaseOption)new CheckBoxOption(configEntry, restartRequired), modGUID, modName);}public static void AddOptionString(string modGUID, string modName, ConfigEntry<string> configEntry, bool restartRequired){//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_0008: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Unknown result type (might be due to invalid IL or missing references)//IL_0019: Expected O, but got Unknown//IL_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0020: Expected O, but got UnknownModSettingsManager.AddOption((BaseOption)new StringInputFieldOption(configEntry, new InputFieldConfig{submitOn = (SubmitEnum)6,restartRequired = restartRequired}), modGUID, modName);}}public static class SoftDependencyManager{public static class RiskOfOptionsDependency{public static bool enabled;public static void RegisterModInfo(string modGUID, string modName, string description, Sprite iconSprite = null){RiskOfOptionsDependencyInternal.RegisterModInfo(modGUID, modName, description, iconSprite);}public static void AddOptionInt(string modGUID, string modName, ConfigEntry<int> configEntry, int min = 0, int max = 1000, bool restartRequired = false){RiskOfOptionsDependencyInternal.AddOptionInt(modGUID, modName, configEntry, min, max, restartRequired);}public static void AddOptionFloat(string modGUID, string modName, ConfigEntry<float> configEntry, float min = 0f, float max = 1000f, bool restartRequired = false){RiskOfOptionsDependencyInternal.AddOptionFloat(modGUID, modName, configEntry, min, max, restartRequired);}public static void AddOptionBool(string modGUID, string modName, ConfigEntry<bool> configEntry, bool restartRequired = false){RiskOfOptionsDependencyInternal.AddOptionBool(modGUID, modName, configEntry, restartRequired);}public static void AddOptionString(string modGUID, string modName, ConfigEntry<string> configEntry, bool restartRequired = false){RiskOfOptionsDependencyInternal.AddOptionString(modGUID, modName, configEntry, restartRequired);}}internal static void Init(){if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")){RiskOfOptionsDependency.enabled = true;}}}}namespace BulwarksHaunt{[BepInPlugin("com.themysticsword.bulwarkshaunt", "Bulwark's Haunt", "10.0.1")][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)][BepInDependency(/*Could not decode attribute arguments.*/)][NetworkCompatibility(/*Could not decode attribute arguments.*/)]public class BulwarksHauntPlugin : BaseUnityPlugin{[Serializable][CompilerGenerated]private sealed class <>c{public static readonly <>c <>9 = new <>c();public static CollectContentPackProvidersDelegate <>9__11_0;internal void <Awake>b__11_0(AddContentPackProviderDelegate addContentPackProvider){addContentPackProvider.Invoke((IContentPackProvider)(object)new BulwarksHauntContent());}}public const string PluginGUID = "com.themysticsword.bulwarkshaunt";public const string PluginName = "Bulwark's Haunt";public const string PluginVersion = "10.0.1";public static Assembly executingAssembly;internal static Type declaringType;internal static PluginInfo pluginInfo;internal static ManualLogSource logger;internal static ConfigFile config;private static AssetBundle _assetBundle;public static AssetBundle AssetBundle{get{if ((Object)(object)_assetBundle == (Object)null){_assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(pluginInfo.Location), "bulwarkshauntassetbundle"));}return _assetBundle;}}public void Awake(){//IL_0090: Unknown result type (might be due to invalid IL or missing references)//IL_0095: Unknown result type (might be due to invalid IL or missing references)//IL_009b: Expected O, but got Unknown//IL_00d2: Unknown result type (might be due to invalid IL or missing references)//IL_00d8: Expected O, but got Unknown//IL_0117: Unknown result type (might be due to invalid IL or missing references)//IL_0126: Unknown result type (might be due to invalid IL or missing references)pluginInfo = ((BaseUnityPlugin)this).Info;logger = ((BaseUnityPlugin)this).Logger;config = ((BaseUnityPlugin)this).Config;executingAssembly = Assembly.GetExecutingAssembly();declaringType = MethodBase.GetCurrentMethod().DeclaringType;TMProEffects.Init();GhostWaveSkins.Init();NetworkingAPI.RegisterMessageType<BulwarksHauntWaveModifier.SyncWaveModifierActive>();ContentLoadHelper.PluginAwakeLoad<BaseItem>(executingAssembly);ContentLoadHelper.PluginAwakeLoad<BaseEquipment>(executingAssembly);ContentLoadHelper.PluginAwakeLoad<BaseBuff>(executingAssembly);ContentLoadHelper.PluginAwakeLoad<BaseInteractable>(executingAssembly);ContentLoadHelper.PluginAwakeLoad<GhostWave>(executingAssembly);object obj = <>c.<>9__11_0;if (obj == null){CollectContentPackProvidersDelegate val = delegate(AddContentPackProviderDelegate addContentPackProvider){addContentPackProvider.Invoke((IContentPackProvider)(object)new BulwarksHauntContent());};<>c.<>9__11_0 = val;obj = (object)val;}ContentManager.collectContentPackProviders += (CollectContentPackProvidersDelegate)obj;Dictionary<string, PluginInfo> pluginInfos = Chainloader.PluginInfos;if (pluginInfos.ContainsKey("com.TeamMoonstorm.MoonstormSharedUtils")){AddSceneBlacklist();}if (pluginInfos.ContainsKey("com.KingEnderBrine.ProperSave")){ProperSaveSupport.Init();}if (SoftDependencyManager.RiskOfOptionsDependency.enabled){Texture2D val2 = new Texture2D(2, 2);ImageConversion.LoadImage(val2, File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "icon.png")));Sprite iconSprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0f, 0f), 100f);SoftDependencyManager.RiskOfOptionsDependency.RegisterModInfo("com.themysticsword.bulwarkshaunt", "Bulwark's Haunt", "Adds a new Obelisk ending", iconSprite);}}[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]private void AddSceneBlacklist(){SetupWeatherController.blacklistedScenes.Add("BulwarksHaunt_GhostWave");}}public class BulwarksHauntContent : IContentPackProvider{public static class Resources{public static List<GameObject> bodyPrefabs = new List<GameObject>();public static List<GameObject> masterPrefabs = new List<GameObject>();public static List<GameObject> projectilePrefabs = new List<GameObject>();public static List<GameObject> effectPrefabs = new List<GameObject>();public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>();public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>();public static List<Type> entityStateTypes = new List<Type>();public static List<SkillDef> skillDefs = new List<SkillDef>();public static List<SkillFamily> skillFamilies = new List<SkillFamily>();public static List<SceneDef> sceneDefs = new List<SceneDef>();public static List<GameEndingDef> gameEndingDefs = new List<GameEndingDef>();}public static class Items{public static ItemDef BulwarksHaunt_Sword;public static ItemDef BulwarksHaunt_SwordUnleashed;public static ItemDef BulwarksHaunt_GhostFury;public static ItemDef BulwarksHaunt_RecruitedMonster;}public static class GameEndings{public static GameEndingDef BulwarksHaunt_HauntedEnding;}public static class Achievements{public static AchievementDef BulwarksHaunt_WinGhostWave;}private readonly ContentPack contentPack = new ContentPack();public string identifier => "Bulwark's Haunt";public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args){contentPack.identifier = identifier;ContentLoadHelper contentLoadHelper = new ContentLoadHelper();Action[] loadDispatchers2 = new Action[5]{delegate{contentLoadHelper.DispatchLoad<ItemDef>(BulwarksHauntPlugin.executingAssembly, typeof(BaseItem), (Action<ItemDef[]>)delegate(ItemDef[] x){contentPack.itemDefs.Add(x);});},delegate{contentLoadHelper.DispatchLoad<EquipmentDef>(BulwarksHauntPlugin.executingAssembly, typeof(BaseEquipment), (Action<EquipmentDef[]>)delegate(EquipmentDef[] x){contentPack.equipmentDefs.Add(x);});},delegate{contentLoadHelper.DispatchLoad<BuffDef>(BulwarksHauntPlugin.executingAssembly, typeof(BaseBuff), (Action<BuffDef[]>)delegate(BuffDef[] x){contentPack.buffDefs.Add(x);});},delegate{contentLoadHelper.DispatchLoad<GameObject>(BulwarksHauntPlugin.executingAssembly, typeof(BaseInteractable), (Action<GameObject[]>)null);},delegate{contentLoadHelper.DispatchLoad<SceneDef>(BulwarksHauntPlugin.executingAssembly, typeof(GhostWave), (Action<SceneDef[]>)null);}};int k = 0;while (k < loadDispatchers2.Length){loadDispatchers2[k]();args.ReportProgress(Util.Remap((float)(k + 1), 0f, (float)loadDispatchers2.Length, 0f, 0.05f));yield return null;int num = k + 1;k = num;}while (contentLoadHelper.coroutine.MoveNext()){args.ReportProgress(Util.Remap(contentLoadHelper.progress.value, 0f, 1f, 0.05f, 0.9f));yield return contentLoadHelper.coroutine.Current;}loadDispatchers2 = new Action[12]{delegate{ContentLoadHelper.PopulateTypeFields<ItemDef>(typeof(Items), contentPack.itemDefs, (Func<string, string>)null);},delegate{contentPack.bodyPrefabs.Add(Resources.bodyPrefabs.ToArray());},delegate{contentPack.masterPrefabs.Add(Resources.masterPrefabs.ToArray());},delegate{contentPack.projectilePrefabs.Add(Resources.projectilePrefabs.ToArray());},delegate{contentPack.effectDefs.Add(Resources.effectPrefabs.ConvertAll((Converter<GameObject, EffectDef>)((GameObject x) => new EffectDef(x))).ToArray());},delegate{contentPack.networkSoundEventDefs.Add(Resources.networkSoundEventDefs.ToArray());},delegate{contentPack.unlockableDefs.Add(Resources.unlockableDefs.ToArray());},delegate{contentPack.entityStateTypes.Add(Resources.entityStateTypes.ToArray());},delegate{contentPack.skillDefs.Add(Resources.skillDefs.ToArray());},delegate{contentPack.skillFamilies.Add(Resources.skillFamilies.ToArray());},delegate{contentPack.sceneDefs.Add(Resources.sceneDefs.ToArray());},delegate{contentPack.gameEndingDefs.Add(Resources.gameEndingDefs.ToArray());}};k = 0;while (k < loadDispatchers2.Length){loadDispatchers2[k]();args.ReportProgress(Util.Remap((float)(k + 1), 0f, (float)loadDispatchers2.Length, 0.9f, 0.95f));yield return null;int num = k + 1;k = num;}loadDispatchers2 = new Action[4]{delegate{ContentLoadHelper.InvokeAfterContentPackLoaded<BaseItem>(BulwarksHauntPlugin.executingAssembly);},delegate{ContentLoadHelper.InvokeAfterContentPackLoaded<BaseEquipment>(BulwarksHauntPlugin.executingAssembly);},delegate{ContentLoadHelper.InvokeAfterContentPackLoaded<BaseBuff>(BulwarksHauntPlugin.executingAssembly);},delegate{ContentLoadHelper.InvokeAfterContentPackLoaded<BaseInteractable>(BulwarksHauntPlugin.executingAssembly);}};k = 0;while (k < loadDispatchers2.Length){loadDispatchers2[k]();args.ReportProgress(Util.Remap((float)(k + 1), 0f, (float)loadDispatchers2.Length, 0.95f, 0.99f));yield return null;int num = k + 1;k = num;}}public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args){ContentPack.Copy(contentPack, args.output);args.ReportProgress(1f);yield break;}public IEnumerator FinalizeAsync(FinalizeAsyncArgs args){args.ReportProgress(1f);yield break;}}[CreateAssetMenu(fileName = "NewWaveModifier.asset", menuName = "Bulwark's Haunt/Wave Modifier")]public class BulwarksHauntWaveModifier : ScriptableObject{public delegate void WaveModifierEventHandler(GhostWave.GhostWaveControllerBaseState.MonsterWaves waveState = null);public class SyncWaveModifierActive : INetMessage, ISerializableObject{private int modifierIndex;private bool active;public SyncWaveModifierActive(){}public SyncWaveModifierActive(int modifierIndex, bool active){this.modifierIndex = modifierIndex;this.active = active;}public void Deserialize(NetworkReader reader){modifierIndex = reader.ReadInt32();active = reader.ReadBoolean();}public void OnReceived(){if (NetworkServer.active){return;}BulwarksHauntWaveModifier waveModifier = GhostWave.WaveModifierCatalog.GetWaveModifier(modifierIndex);if (Object.op_Implicit((Object)(object)waveModifier) && active != waveModifier.active){if (active){waveModifier.Activate();}else{waveModifier.Deactivate();}}}public void Serialize(NetworkWriter writer){writer.Write(modifierIndex);writer.Write(active);}}public string nameToken;public string popupToken;public string descriptionToken;[Header("Auto-assigned at runtime")]public bool active;public int index = -1;public WaveModifierEventHandler onActivated;public WaveModifierEventHandler onUpdate;public WaveModifierEventHandler onFixedUpdate;public WaveModifierEventHandler onDeactivated;private string _cachedName;public string CachedName{get{return _cachedName;}set{_cachedName = value;((Object)this).name = value;}}[ContextMenu("Auto Populate Tokens")]public void AutoPopulateTokens(){nameToken = "BULWARKSHAUNT_GHOSTWAVE_MODIFIER_" + ((Object)this).name.ToUpperInvariant() + "_NAME";popupToken = "BULWARKSHAUNT_GHOSTWAVE_MODIFIER_" + ((Object)this).name.ToUpperInvariant() + "_POPUP";descriptionToken = "BULWARKSHAUNT_GHOSTWAVE_MODIFIER_" + ((Object)this).name.ToUpperInvariant() + "_DESCRIPTION";}public void Activate(GhostWave.GhostWaveControllerBaseState.MonsterWaves waveState = null){//IL_0089: Unknown result type (might be due to invalid IL or missing references)//IL_0090: Expected O, but got Unknown//IL_0063: Unknown result type (might be due to invalid IL or missing references)//IL_0069: Expected O, but got Unknownif (active){return;}active = true;GhostWave.WaveModifierCatalog.activeWaveModifiers.Add(CachedName);if (Object.op_Implicit((Object)(object)Run.instance)){foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances){if (Object.op_Implicit((Object)(object)instance.master)){CharacterMasterNotificationQueue notificationQueueForMaster = CharacterMasterNotificationQueue.GetNotificationQueueForMaster(instance.master);if (Object.op_Implicit((Object)(object)notificationQueueForMaster)){NotificationInfo val = new NotificationInfo((object)this, (TransformationInfo)null);notificationQueueForMaster.PushNotification(val, 10f);}}}}SimpleChatMessage val2 = new SimpleChatMessage();val2.baseToken = "BULWARKSHAUNT_GHOSTWAVE_SYSTEM_WAVEMODIFIER";val2.paramTokens = new string[1] { Language.currentLanguage.GetLocalizedStringByToken(nameToken) };Chat.AddMessage((ChatMessageBase)(object)val2);if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncWaveModifierActive(index, active: true), (NetworkDestination)1);}onActivated?.Invoke(waveState);}public void Deactivate(GhostWave.GhostWaveControllerBaseState.MonsterWaves waveState = null){if (active){active = false;GhostWave.WaveModifierCatalog.activeWaveModifiers.Remove(CachedName);if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncWaveModifierActive(index, active: false), (NetworkDestination)1);}onDeactivated?.Invoke(waveState);}}}public class GhostWave : BaseLoadableAsset{public struct BakedNodes{public NodeSerialized[] nodes;public Link[] links;public List<string> gateNames;}public struct NodeSerialized{public float x;public float y;public float z;public LinkListIndex linkListIndex;public HullMask forbiddenHulls;public byte[] lineOfSightMaskBytes;public int lineOfSightMaskLength;public byte gateIndex;public NodeFlags flags;}public struct KilledEnemyData{public BodyIndex bodyIndex;public List<ItemCountPair> inventory;public EquipmentDef equipment;}public static class WaveModifierCatalog{public static List<BulwarksHauntWaveModifier> allWaveModifiers = new List<BulwarksHauntWaveModifier>();public static Dictionary<string, BulwarksHauntWaveModifier> nameToModifier = new Dictionary<string, BulwarksHauntWaveModifier>();public static Dictionary<int, BulwarksHauntWaveModifier> indexToModifier = new Dictionary<int, BulwarksHauntWaveModifier>();public static List<string> activeWaveModifiers = new List<string>();public static Action<List<BulwarksHauntWaveModifier>> CollectWaveModifiers;public static void SetWaveModifiers(List<BulwarksHauntWaveModifier> newWaveModifiers){allWaveModifiers.Clear();nameToModifier.Clear();indexToModifier.Clear();for (int i = 0; i < newWaveModifiers.Count; i++){BulwarksHauntWaveModifier bulwarksHauntWaveModifier = newWaveModifiers[i];bulwarksHauntWaveModifier.index = i;allWaveModifiers.Add(bulwarksHauntWaveModifier);nameToModifier.Add(((Object)bulwarksHauntWaveModifier).name, bulwarksHauntWaveModifier);indexToModifier.Add(bulwarksHauntWaveModifier.index, bulwarksHauntWaveModifier);}}public static BulwarksHauntWaveModifier GetWaveModifier(int index){if (indexToModifier.ContainsKey(index)){return indexToModifier[index];}return null;}public static bool IsActive(string name){return activeWaveModifiers.Contains(name);}}public class BulwarksHauntGhostWaveController : MonoBehaviour{public class ClearGhostWavesObjectiveController : ObjectiveTracker{public int wave = -1;public override string GenerateString(){BulwarksHauntGhostWaveController bulwarksHauntGhostWaveController = (BulwarksHauntGhostWaveController)(object)base.sourceDescriptor.source;wave = bulwarksHauntGhostWaveController.wave;if (wave == maxWaves){return Language.GetString("OBJECTIVE_BULWARKSHAUNT_GHOSTWAVE_CLEARWAVES_FINAL");}return string.Format(Language.GetString("OBJECTIVE_BULWARKSHAUNT_GHOSTWAVE_CLEARWAVES"), wave);}public override bool IsDirty(){return ((BulwarksHauntGhostWaveController)(object)base.sourceDescriptor.source).wave != wave;}}public static BulwarksHauntGhostWaveController instance;public int wave = 1;public int currentSpeechVariant = 1;public float oobCheckTimer;public float oobCheckInterval = 5f;public float oobRadius = 350f;public float oobRadiusShrinkAmount = 200f;public float oobShrinkDuration = 300f;public float oobShrinkTimer;public float oobHealthLoss = 0.34f;public Vector3 oobCenter = Vector3.zero;public float oobBottomY = -400f;public static event Action OnGhostWaveComplete;public void OnCompleted(){BulwarksHauntGhostWaveController.OnGhostWaveComplete?.Invoke();ObjectivePanelController.collectObjectiveSources -= ObjectivePanelController_collectObjectiveSources;}private void Start(){instance = this;}private void FixedUpdate(){//IL_0083: Unknown result type (might be due to invalid IL or missing references)//IL_0089: Invalid comparison between Unknown and I4//IL_00ab: Unknown result type (might be due to invalid IL or missing references)//IL_00b1: 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)if (!NetworkServer.active || !((oobCheckTimer -= Time.fixedDeltaTime) <= 0f)){return;}oobCheckTimer += oobCheckInterval;float num = oobRadius - oobRadiusShrinkAmount * Mathf.Min(oobShrinkTimer / oobShrinkDuration, 1f);ReadOnlyCollection<CharacterBody> readOnlyInstancesList = CharacterBody.readOnlyInstancesList;for (int num2 = readOnlyInstancesList.Count - 1; num2 >= 0; num2--){CharacterBody val = readOnlyInstancesList[num2];if ((int)val.teamComponent.teamIndex == 1){if (val.corePosition.y <= oobBottomY){HandleBodyOutOfBounds(val);}}else if (Vector3.Distance(val.corePosition, oobCenter) >= num){HandleBodyOutOfBounds(val);}}}private void HandleBodyOutOfBounds(CharacterBody body){//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_000c: Invalid comparison between Unknown and I4//IL_003f: Unknown result type (might be due to invalid IL or missing references)//IL_0044: Unknown result type (might be due to invalid IL or missing references)//IL_0046: Unknown result type (might be due to invalid IL or missing references)//IL_0066: Unknown result type (might be due to invalid IL or missing references)//IL_0067: Unknown result type (might be due to invalid IL or missing references)//IL_0086: Unknown result type (might be due to invalid IL or missing references)//IL_008b: Unknown result type (might be due to invalid IL or missing references)//IL_00a3: 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_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_00b2: 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_00ba: Unknown result type (might be due to invalid IL or missing references)//IL_00c4: Expected O, but got Unknownif ((int)body.teamComponent.teamIndex == 1 || (Object.op_Implicit((Object)(object)body.inventory) && body.inventory.GetItemCount(Items.TeleportWhenOob) > 0)){Vector3 val = Run.instance.FindSafeTeleportPosition(body, (Transform)null, 0f, 0f);TeleportHelper.TeleportBody(body, val);GameObject teleportEffectPrefab = Run.instance.GetTeleportEffectPrefab(((Component)body).gameObject);if (Object.op_Implicit((Object)(object)teleportEffectPrefab)){EffectManager.SimpleEffect(teleportEffectPrefab, val, Quaternion.identity, true);}}else if (Object.op_Implicit((Object)(object)body.healthComponent)){body.healthComponent.TakeDamage(new DamageInfo{damage = oobHealthLoss * body.healthComponent.fullCombinedHealth,position = body.corePosition,damageType = (DamageType)66,damageColorIndex = (DamageColorIndex)9});}}private void OnEnable(){ObjectivePanelController.collectObjectiveSources += ObjectivePanelController_collectObjectiveSources;}private void OnDisable(){ObjectivePanelController.collectObjectiveSources -= ObjectivePanelController_collectObjectiveSources;}private void ObjectivePanelController_collectObjectiveSources(CharacterMaster master, List<ObjectiveSourceDescriptor> objectiveSourcesList){//IL_0003: Unknown result type (might be due to invalid IL or missing references)//IL_002a: Unknown result type (might be due to invalid IL or missing references)objectiveSourcesList.Add(new ObjectiveSourceDescriptor{master = master,objectiveType = typeof(ClearGhostWavesObjectiveController),source = (Object)(object)this});}}public class GhostWaveControllerBaseState : EntityState{public class Intro : GhostWaveControllerBaseState{public float speechTimer = 5f;public float speechInterval = 8f;public int speechVariant = 1;public int speechProgress = 1;public override void OnEnter(){base.OnEnter();speechVariant = RoR2Application.rng.RangeInt(1, 4);}public override void Update(){//IL_006a: Unknown result type (might be due to invalid IL or missing references)//IL_006f: 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_0082: 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_0095: Expected O, but got Unknownbase.Update();if (Run.instance.livingPlayerCount > 0){speechTimer -= Time.deltaTime;}if (!(speechTimer <= 0f)){return;}string text = "BULWARKSHAUNT_GHOSTWAVE_INTRO_" + speechVariant + "_" + speechProgress;if (!Language.IsTokenInvalid(text)){if (NetworkServer.active){Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage{baseToken = text,formatStringToken = chatFormatStringToken,sender = null,sound = null});}}else if (((EntityState)this).isAuthority){((EntityState)this).outer.SetNextState((EntityState)(object)new MonsterWaves());}speechTimer = speechInterval;speechProgress++;}public override void OnExit(){//IL_0010: Unknown result type (might be due to invalid IL or missing references)//IL_0015: Unknown result type (might be due to invalid IL or missing references)//IL_0035: Unknown result type (might be due to invalid IL or missing references)//IL_0048: Unknown result type (might be due to invalid IL or missing references)base.OnExit();ItemIndex itemIndex = StringExtension.Load<ItemDef>("RoR2/DLC1/LunarWings/LunarWings.asset").itemIndex;foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances){if (instance.master.inventory.GetItemCount(itemIndex) == 0){instance.master.inventory.GiveItem(itemIndex, 1);}}}}public class MonsterWaves : GhostWaveControllerBaseState{public class KillGhostEnemiesObjectiveController : ObjectiveTracker{public int killedEnemies = -1;public int totalEnemies = 1;public override string GenerateString(){//IL_000b: Unknown result type (might be due to invalid IL or missing references)MonsterWaves monsterWaves = (MonsterWaves)(object)((EntityStateMachine)base.sourceDescriptor.source).state;killedEnemies = monsterWaves.killedEnemies;totalEnemies = Mathf.Max(monsterWaves.totalEnemies, 1);float num = (float)killedEnemies / (float)totalEnemies;if (killedEnemies == -1){num = 0f;}return string.Format(Language.GetString("OBJECTIVE_BULWARKSHAUNT_GHOSTWAVE_KILLENEMIES"), Mathf.FloorToInt(num * 100f).ToString());}public override bool IsDirty(){//IL_000b: Unknown result type (might be due to invalid IL or missing references)if (((EntityStateMachine)base.sourceDescriptor.source).state is MonsterWaves monsterWaves){return monsterWaves.killedEnemies != killedEnemies;}return false;}}public class SyncTotalEnemies : INetMessage, ISerializableObject{private NetworkInstanceId objID;private int totalEnemies;public SyncTotalEnemies(){}public SyncTotalEnemies(NetworkInstanceId objID, int totalEnemies){//IL_0007: 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)this.objID = objID;this.totalEnemies = totalEnemies;}public void Deserialize(NetworkReader reader){//IL_0002: Unknown result type (might be due to invalid IL or missing references)//IL_0007: Unknown result type (might be due to invalid IL or missing references)objID = reader.ReadNetworkId();totalEnemies = reader.ReadInt32();}public void OnReceived(){//IL_0009: Unknown result type (might be due to invalid IL or missing references)if (NetworkServer.active){return;}GameObject val = Util.FindNetworkObject(objID);if (Object.op_Implicit((Object)(object)val)){EntityStateMachine component = val.GetComponent<EntityStateMachine>();if (Object.op_Implicit((Object)(object)component) && component.state is MonsterWaves monsterWaves){monsterWaves.totalEnemies = totalEnemies;}}}public void Serialize(NetworkWriter writer){//IL_0002: Unknown result type (might be due to invalid IL or missing references)writer.Write(objID);writer.Write(totalEnemies);}}public class SyncKilledEnemies : INetMessage, ISerializableObject{private NetworkInstanceId objID;private int killedEnemies;public SyncKilledEnemies(){}public SyncKilledEnemies(NetworkInstanceId objID, int killedEnemies){//IL_0007: 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)this.objID = objID;this.killedEnemies = killedEnemies;}public void Deserialize(NetworkReader reader){//IL_0002: Unknown result type (might be due to invalid IL or missing references)//IL_0007: Unknown result type (might be due to invalid IL or missing references)objID = reader.ReadNetworkId();killedEnemies = reader.ReadInt32();}public void OnReceived(){//IL_0009: Unknown result type (might be due to invalid IL or missing references)if (NetworkServer.active){return;}GameObject val = Util.FindNetworkObject(objID);if (Object.op_Implicit((Object)(object)val)){EntityStateMachine component = val.GetComponent<EntityStateMachine>();if (Object.op_Implicit((Object)(object)component) && component.state is MonsterWaves monsterWaves){monsterWaves.killedEnemies = killedEnemies;}}}public void Serialize(NetworkWriter writer){//IL_0002: Unknown result type (might be due to invalid IL or missing references)writer.Write(objID);writer.Write(killedEnemies);}}public List<KilledEnemyData> enemiesThisWave;public Xoroshiro128Plus rng;public List<CharacterMaster> aliveEnemies = new List<CharacterMaster>();public int killedEnemies;public int totalEnemies;public float spawnTimer = 0.1f;public float spawnInterval = 20f;public int spawnBatchCount = 10;public int speechVariant = 1;public float spawnBatchTimer;public float spawnBatchInterval = 0.1f;public int spawnBatchCurrent;public float aliveEnemiesRecheckTimer = 60f;public float aliveEnemiesRecheckInterval = 60f;public float antiSoftlockTimer = 600f;public List<BulwarksHauntWaveModifier> activeModifiers = new List<BulwarksHauntWaveModifier>();public override void OnEnter(){//IL_0155: Unknown result type (might be due to invalid IL or missing references)//IL_015f: Expected O, but got Unknown//IL_016a: Unknown result type (might be due to invalid IL or missing references)//IL_017a: Unknown result type (might be due to invalid IL or missing references)//IL_018a: Unknown result type (might be due to invalid IL or missing references)//IL_019a: Unknown result type (might be due to invalid IL or missing references)//IL_01aa: Unknown result type (might be due to invalid IL or missing references)//IL_01de: Unknown result type (might be due to invalid IL or missing references)//IL_01ee: Unknown result type (might be due to invalid IL or missing references)//IL_01fe: Unknown result type (might be due to invalid IL or missing references)//IL_020e: Unknown result type (might be due to invalid IL or missing references)//IL_021e: Unknown result type (might be due to invalid IL or missing references)//IL_022e: Unknown result type (might be due to invalid IL or missing references)//IL_023e: Unknown result type (might be due to invalid IL or missing references)//IL_024e: Unknown result type (might be due to invalid IL or missing references)//IL_025e: Unknown result type (might be due to invalid IL or missing references)//IL_0293: Unknown result type (might be due to invalid IL or missing references)//IL_02a3: Unknown result type (might be due to invalid IL or missing references)//IL_02b3: Unknown result type (might be due to invalid IL or missing references)//IL_02c3: Unknown result type (might be due to invalid IL or missing references)//IL_02d3: Unknown result type (might be due to invalid IL or missing references)//IL_02e3: Unknown result type (might be due to invalid IL or missing references)//IL_02f3: Unknown result type (might be due to invalid IL or missing references)//IL_0303: Unknown result type (might be due to invalid IL or missing references)//IL_0313: Unknown result type (might be due to invalid IL or missing references)//IL_0105: Unknown result type (might be due to invalid IL or missing references)//IL_010c: Expected O, but got Unknown//IL_00ef: Unknown result type (might be due to invalid IL or missing references)//IL_00f9: Expected O, but got Unknown//IL_00c3: Unknown result type (might be due to invalid IL or missing references)//IL_0421: Unknown result type (might be due to invalid IL or missing references)//IL_0426: Unknown result type (might be due to invalid IL or missing references)//IL_047e: Unknown result type (might be due to invalid IL or missing references)//IL_0483: Unknown result type (might be due to invalid IL or missing references)//IL_04dd: Unknown result type (might be due to invalid IL or missing references)//IL_04e2: Unknown result type (might be due to invalid IL or missing references)//IL_0566: Unknown result type (might be due to invalid IL or missing references)base.OnEnter();if (ghostWaveController.wave == 1){speechVariant = RoR2Application.rng.RangeInt(1, 4);ghostWaveController.currentSpeechVariant = speechVariant;}else{speechVariant = ghostWaveController.currentSpeechVariant;}PlaySoundForViewedCameras("Play_ui_obj_nullWard_activate");if (killedEnemiesPerStage.TryGetValue(ghostWaveController.wave, out var value)){enemiesThisWave = value.Where((KilledEnemyData x) => Object.op_Implicit((Object)(object)BodyCatalog.GetBodyPrefab(x.bodyIndex))).ToList();totalEnemies = enemiesThisWave.Count;if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncTotalEnemies(((EntityState)this).gameObject.GetComponent<NetworkIdentity>().netId, totalEnemies), (NetworkDestination)1);}rng = new Xoroshiro128Plus(waveRng[ghostWaveController.wave]);}else{if (NetworkServer.active){SimpleChatMessage val = new SimpleChatMessage();val.baseToken = "BULWARKSHAUNT_GHOSTWAVE_SYSTEM_WAVEFALLBACK";val.paramTokens = new string[1] { ghostWaveController.wave.ToString() };Chat.SendBroadcastChat((ChatMessageBase)(object)val);}enemiesThisWave = new List<KilledEnemyData>();rng = new Xoroshiro128Plus(RoR2Application.rng.nextUlong);List<BodyIndex> list = new List<BodyIndex>{BodyCatalog.FindBodyIndex("BeetleBody"),BodyCatalog.FindBodyIndex("WispBody"),BodyCatalog.FindBodyIndex("LemurianBody"),BodyCatalog.FindBodyIndex("ImpBody"),BodyCatalog.FindBodyIndex("JellyfishBody")};int num = Mathf.FloorToInt(18f + 7f * (float)ghostWaveController.wave);List<BodyIndex> list2 = new List<BodyIndex>{BodyCatalog.FindBodyIndex("BeetleGuardBody"),BodyCatalog.FindBodyIndex("GreaterWispBody"),BodyCatalog.FindBodyIndex("LemurianBruiserBody"),BodyCatalog.FindBodyIndex("BellBody"),BodyCatalog.FindBodyIndex("ClayBruiserBody"),BodyCatalog.FindBodyIndex("BellBody"),BodyCatalog.FindBodyIndex("MiniMushroomBody"),BodyCatalog.FindBodyIndex("ParentBody"),BodyCatalog.FindBodyIndex("GolemBody")};int num2 = Mathf.FloorToInt(2f + 3f * (float)ghostWaveController.wave);List<BodyIndex> list3 = new List<BodyIndex>{BodyCatalog.FindBodyIndex("BeetleQueen2Body"),BodyCatalog.FindBodyIndex("ClayBossBody"),BodyCatalog.FindBodyIndex("GrandParentBody"),BodyCatalog.FindBodyIndex("GravekeeperBody"),BodyCatalog.FindBodyIndex("ImpBossBody"),BodyCatalog.FindBodyIndex("MagmaWormBody"),BodyCatalog.FindBodyIndex("RoboBallBossBody"),BodyCatalog.FindBodyIndex("VagrantBody"),BodyCatalog.FindBodyIndex("TitanBody")};int num3 = Mathf.FloorToInt(1f + 0.5f * (float)ghostWaveController.wave);WeightedSelection<EquipmentDef> val2 = new WeightedSelection<EquipmentDef>(8);val2.AddChoice((EquipmentDef)null, 1f);if (ghostWaveController.wave >= 3){val2.AddChoice(Equipment.AffixRed, 0.0111f * (float)ghostWaveController.wave);val2.AddChoice(Equipment.AffixBlue, 0.0111f * (float)ghostWaveController.wave);val2.AddChoice(Equipment.AffixWhite, 0.0111f * (float)ghostWaveController.wave);}if (ghostWaveController.wave >= 6){val2.AddChoice(Equipment.AffixPoison, 0.0085f * (float)ghostWaveController.wave);val2.AddChoice(Equipment.AffixHaunted, 0.0085f * (float)ghostWaveController.wave);}for (int i = 0; i < num; i++){enemiesThisWave.Add(new KilledEnemyData{bodyIndex = rng.NextElementUniform<BodyIndex>(list),inventory = new List<ItemCountPair>(),equipment = val2.Evaluate(rng.nextNormalizedFloat)});}for (int j = 0; j < num2; j++){enemiesThisWave.Add(new KilledEnemyData{bodyIndex = rng.NextElementUniform<BodyIndex>(list2),inventory = new List<ItemCountPair>(),equipment = val2.Evaluate(rng.nextNormalizedFloat)});}for (int k = 0; k < num3; k++){enemiesThisWave.Add(new KilledEnemyData{bodyIndex = rng.NextElementUniform<BodyIndex>(list3),inventory = new List<ItemCountPair>(),equipment = null});}enemiesThisWave = enemiesThisWave.Where((KilledEnemyData x) => Object.op_Implicit((Object)(object)BodyCatalog.GetBodyPrefab(x.bodyIndex))).ToList();totalEnemies = enemiesThisWave.Count;if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncTotalEnemies(((EntityState)this).gameObject.GetComponent<NetworkIdentity>().netId, totalEnemies), (NetworkDestination)1);}}spawnBatchCount += ghostWaveController.wave - 1;GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal;ObjectivePanelController.collectObjectiveSources += ObjectivePanelController_collectObjectiveSources;if (!NetworkServer.active || !ShouldActivateModifier()){return;}List<BulwarksHauntWaveModifier> list4 = new List<BulwarksHauntWaveModifier>(WaveModifierCatalog.allWaveModifiers);for (int l = 0; l < ModifiersToActivateThisWave(); l++){if (list4.Count <= 0){break;}BulwarksHauntWaveModifier bulwarksHauntWaveModifier = rng.NextElementUniform<BulwarksHauntWaveModifier>(list4);list4.Remove(bulwarksHauntWaveModifier);bulwarksHauntWaveModifier.Activate(this);activeModifiers.Add(bulwarksHauntWaveModifier);}}public uint GetCoinReward(){return (uint)(1 + Mathf.CeilToInt((float)ghostWaveController.wave / 4f));}public bool ShouldActivateModifier(){int num = 4;if (moreFrequentModifiers.Value){num = 2;}if (superFrequentModifiers.Value){num = 1;}return ghostWaveController.wave % num == 0;}public int ModifiersToActivateThisWave(){if (ghostWaveController.wave == maxWaves && finalWaveAllModifiers.Value){return WaveModifierCatalog.allWaveModifiers.Count;}return 1;}public override void FixedUpdate(){((EntityState)this).FixedUpdate();if (NetworkServer.active){if (enemiesThisWave.Count > 0){spawnTimer -= Time.fixedDeltaTime;if (spawnTimer <= 0f){spawnTimer += spawnInterval;spawnBatchTimer = 0f;spawnBatchCurrent = spawnBatchCount;}if (spawnBatchCurrent > 0){spawnBatchTimer -= Time.fixedDeltaTime;if (spawnBatchTimer <= 0f){spawnBatchTimer += spawnBatchInterval;TryUnloadFromBatch();}}}aliveEnemiesRecheckTimer -= Time.fixedDeltaTime;antiSoftlockTimer -= Time.fixedDeltaTime;if ((aliveEnemiesRecheckTimer <= 0f || antiSoftlockTimer <= 0f) && Run.instance.livingPlayerCount > 0){aliveEnemiesRecheckTimer = aliveEnemiesRecheckInterval;CheckAllEnemiesDead();}ghostWaveController.oobShrinkTimer += Time.fixedDeltaTime;}foreach (BulwarksHauntWaveModifier activeModifier in activeModifiers){if (activeModifier.onFixedUpdate != null){activeModifier.onFixedUpdate(this);}}}public override void Update(){base.Update();foreach (BulwarksHauntWaveModifier activeModifier in activeModifiers){if (activeModifier.onUpdate != null){activeModifier.onUpdate(this);}}}public void TryUnloadFromBatch(){//IL_0056: Unknown result type (might be due to invalid IL or missing references)//IL_005b: Unknown result type (might be due to invalid IL or missing references)//IL_005d: Unknown result type (might be due to invalid IL or missing references)//IL_0063: Expected O, but got Unknown//IL_017c: 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_00f6: Unknown result type (might be due to invalid IL or missing references)//IL_0102: Unknown result type (might be due to invalid IL or missing references)//IL_010b: Expected O, but got Unknown//IL_00ac: Unknown result type (might be due to invalid IL or missing references)//IL_00b1: Unknown result type (might be due to invalid IL or missing references)//IL_00b3: Unknown result type (might be due to invalid IL or missing references)//IL_00b8: Unknown result type (might be due to invalid IL or missing references)//IL_00cf: Unknown result type (might be due to invalid IL or missing references)//IL_00d7: Expected O, but got UnknownTeamDef teamDef = TeamCatalog.GetTeamDef((TeamIndex)2);if (TeamComponent.GetTeamMembers((TeamIndex)2).Count >= teamDef.softCharacterLimit){return;}KilledEnemyData newEnemy = rng.NextElementUniform<KilledEnemyData>(enemiesThisWave);CharacterSpawnCard val = GenerateSpawnCardForKilledEnemy(newEnemy);if (Object.op_Implicit((Object)(object)val)){DirectorPlacementRule val2 = new DirectorPlacementRule{placementMode = (PlacementMode)4};List<PlayerCharacterMasterController> list = PlayerCharacterMasterController.instances.Where((PlayerCharacterMasterController x) => x.master.hasBody).ToList();if (list.Count > 0){PlayerCharacterMasterController val3 = rng.NextElementUniform<PlayerCharacterMasterController>(list);val2 = new DirectorPlacementRule{placementMode = (PlacementMode)1,spawnOnTarget = val3.master.GetBodyObject().transform,preventOverhead = true};DirectorCore.GetMonsterSpawnDistance((MonsterSpawnDistance)0, ref val2.minDistance, ref val2.maxDistance);}DirectorSpawnRequest val4 = new DirectorSpawnRequest((SpawnCard)(object)val, val2, rng){teamIndexOverride = (TeamIndex)2,ignoreTeamMemberLimit = true};val4.onSpawnedServer = (Action<SpawnResult>)Delegate.Combine(val4.onSpawnedServer, (Action<SpawnResult>)delegate(SpawnResult spawnResult){//IL_0000: Unknown result type (might be due to invalid IL or missing references)//IL_0037: Unknown result type (might be due to invalid IL or missing references)if (spawnResult.success){enemiesThisWave.Remove(newEnemy);spawnBatchCurrent--;CharacterMaster component = spawnResult.spawnedInstance.GetComponent<CharacterMaster>();aliveEnemies.Add(component);if (Object.op_Implicit((Object)(object)component.inventory) && component.inventory.GetItemCount(BulwarksHauntContent.Items.BulwarksHaunt_GhostFury) <= 0){component.inventory.GiveItem(BulwarksHauntContent.Items.BulwarksHaunt_GhostFury, 1);}}});DirectorCore.instance.TrySpawnObject(val4);}else{enemiesThisWave.Remove(newEnemy);spawnBatchCurrent--;killedEnemies++;if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncKilledEnemies(((EntityState)this).gameObject.GetComponent<NetworkIdentity>().netId, killedEnemies), (NetworkDestination)1);}}}public void CheckAllEnemiesDead(){if (!NetworkServer.active){return;}FilterInvalidAliveEnemies();if (killedEnemies < totalEnemies && !(antiSoftlockTimer <= 0f) && (aliveEnemies.Count != 0 || enemiesThisWave.Count != 0)){return;}Advance();ReadOnlyCollection<TeamComponent> teamMembers = TeamComponent.GetTeamMembers((TeamIndex)2);for (int num = teamMembers.Count - 1; num >= 0; num--){CharacterBody body = teamMembers[num].body;if (body != null){body.healthComponent.Suicide((GameObject)null, (GameObject)null, (DamageType)0);}}}public void FilterInvalidAliveEnemies(){int count = aliveEnemies.Count;aliveEnemies = aliveEnemies.Where((CharacterMaster x) => (Object)(object)x != (Object)null && x.hasBody).ToList();if (aliveEnemies.Count < count){killedEnemies += count - aliveEnemies.Count;}}public void Advance(){//IL_004c: Unknown result type (might be due to invalid IL or missing references)//IL_0052: Expected O, but got Unknown//IL_00ac: Unknown result type (might be due to invalid IL or missing references)//IL_00b1: Unknown result type (might be due to invalid IL or missing references)//IL_00e1: Unknown result type (might be due to invalid IL or missing references)//IL_00ed: Unknown result type (might be due to invalid IL or missing references)//IL_00f4: Unknown result type (might be due to invalid IL or missing references)//IL_0100: Expected O, but got Unknownif (NetworkServer.active){RespawnPlayers();uint coinReward = GetCoinReward();for (int i = 0; i < NetworkUser.readOnlyInstancesList.Count; i++){NetworkUser val = NetworkUser.readOnlyInstancesList[i];if (Object.op_Implicit((Object)(object)val) && val.isParticipating){val.AwardLunarCoins(coinReward);}}SimpleChatMessage val2 = new SimpleChatMessage();val2.baseToken = "BULWARKSHAUNT_GHOSTWAVE_SYSTEM_WAVECLEAR";val2.paramTokens = new string[1] { coinReward.ToString() };Chat.SendBroadcastChat((ChatMessageBase)(object)val2);}if (ghostWaveController.wave + 1 <= maxWaves){if (((EntityState)this).isAuthority){((EntityState)this).outer.SetNextState((EntityState)(object)new BreakBetweenWaves());}if (NetworkServer.active){Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage{baseToken = "BULWARKSHAUNT_GHOSTWAVE_WAVECLEAR_" + speechVariant + "_" + ghostWaveController.wave,formatStringToken = chatFormatStringToken,sender = null,sound = null});}}else if (((EntityState)this).isAuthority){((EntityState)this).outer.SetNextState((EntityState)(object)new Ending());}}public void RespawnPlayers(){//IL_0040: Unknown result type (might be due to invalid IL or missing references)//IL_0045: Unknown result type (might be due to invalid IL or missing references)//IL_0047: Unknown result type (might be due to invalid IL or missing references)//IL_0061: Unknown result type (might be due to invalid IL or missing references)//IL_009e: Unknown result type (might be due to invalid IL or missing references)//IL_00a3: Unknown result type (might be due to invalid IL or missing references)//IL_00c0: Unknown result type (might be due to invalid IL or missing references)//IL_00c5: Unknown result type (might be due to invalid IL or missing references)//IL_00c6: 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_00d3: Unknown result type (might be due to invalid IL or missing references)//IL_00d8: Unknown result type (might be due to invalid IL or missing references)//IL_00e3: Expected O, but got Unknownif (!coopRespawnEachWave.Value){return;}foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances){CharacterMaster master = instance.master;if (!instance.isConnected || !master.IsDeadAndOutOfLivesServer()){continue;}Vector3 deathFootPosition = master.deathFootPosition;master.Respawn(deathFootPosition, Quaternion.Euler(0f, Random.Range(0f, 360f), 0f));CharacterBody body = master.GetBody();if (Object.op_Implicit((Object)(object)body)){body.AddTimedBuff(Buffs.Immune, 3f);EntityStateMachine[] components = ((Component)body).GetComponents<EntityStateMachine>();foreach (EntityStateMachine obj in components){obj.initialStateType = obj.mainStateType;}EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/HippoRezEffect"), new EffectData{origin = deathFootPosition,rotation = body.transform.rotation}, true);}}}public override void OnExit(){base.OnExit();ghostWaveController.oobShrinkTimer = 0f;PlaySoundForViewedCameras("Play_ui_obj_nullWard_complete");GlobalEventManager.onCharacterDeathGlobal -= GlobalEventManager_onCharacterDeathGlobal;ObjectivePanelController.collectObjectiveSources -= ObjectivePanelController_collectObjectiveSources;foreach (BulwarksHauntWaveModifier activeModifier in activeModifiers){activeModifier.Deactivate(this);}}private void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport){//IL_0048: Unknown result type (might be due to invalid IL or missing references)//IL_00da: Unknown result type (might be due to invalid IL or missing references)//IL_00df: Unknown result type (might be due to invalid IL or missing references)//IL_0103: Unknown result type (might be due to invalid IL or missing references)//IL_010f: Unknown result type (might be due to invalid IL or missing references)//IL_0116: Unknown result type (might be due to invalid IL or missing references)//IL_0122: Expected O, but got Unknownif (aliveEnemies.Contains(damageReport.victimMaster)){aliveEnemies.Remove(damageReport.victimMaster);killedEnemies++;if (NetworkServer.active){NetMessageExtensions.Send((INetMessage)(object)new SyncKilledEnemies(((EntityState)this).gameObject.GetComponent<NetworkIdentity>().netId, killedEnemies), (NetworkDestination)1);}aliveEnemiesRecheckTimer = 0.1f;spawnTimer -= spawnInterval / (float)spawnBatchCount * 0.8f;if (aliveEnemies.Count <= 3 && spawnTimer > 0.1f && spawnBatchCurrent <= 0){spawnTimer = 0.1f;}}CharacterMaster victimMaster = damageReport.victimMaster;if ((Object)(object)((victimMaster != null) ? victimMaster.playerCharacterMasterController : null) != (Object)null && NetworkServer.active){Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage{baseToken = "BULWARKSHAUNT_GHOSTWAVE_LOSS_" + RoR2Application.rng.RangeInt(1, 5),formatStringToken = chatFormatStringToken,sender = null,sound = null});}}private void ObjectivePanelController_collectObjectiveSources(CharacterMaster master, List<ObjectiveSourceDescriptor> objectiveSourcesList){//IL_0003: 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)objectiveSourcesList.Add(new ObjectiveSourceDescriptor{master = master,objectiveType = typeof(KillGhostEnemiesObjectiveController),source = (Object)(object)((EntityState)this).outer});}}public class BreakBetweenWaves : GhostWaveControllerBaseState{public class WaitForNextWaveObjectiveController : ObjectiveTracker{public override string GenerateString(){//IL_000b: Unknown result type (might be due to invalid IL or missing references)TimeSpan timeSpan = TimeSpan.FromSeconds(Mathf.Max(((BreakBetweenWaves)(object)((EntityStateMachine)base.sourceDescriptor.source).state).timeLeft, 0f));string arg = $"{timeSpan.Seconds:D2}:{timeSpan.Milliseconds / 10:D2}";return string.Format(Language.GetString("OBJECTIVE_BULWARKSHAUNT_GHOSTWAVE_WAITFORNEXTWAVE"), arg);}public override bool IsDirty(){//IL_000b: Unknown result type (might be due to invalid IL or missing references)return ((EntityStateMachine)base.sourceDescriptor.source).state is BreakBetweenWaves;}}public float timeLeft = 15f;public override void OnEnter(){base.OnEnter();ObjectivePanelController.collectObjectiveSources += ObjectivePanelController_collectObjectiveSources;}public override void OnExit(){base.OnExit();ObjectivePanelController.collectObjectiveSources -= ObjectivePanelController_collectObjectiveSources;ghostWaveController.wave++;}public override void Update(){base.Update();if (Run.instance.livingPlayerCount > 0){timeLeft -= Time.deltaTime;}if (timeLeft <= 0f && ((EntityState)this).isAuthority){((EntityState)this).outer.SetNextState((EntityState)(object)new MonsterWaves());}}private void ObjectivePanelController_collectObjectiveSources(CharacterMaster master, List<ObjectiveSourceDescriptor> objectiveSourcesList){//IL_0003: 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)objectiveSourcesList.Add(new ObjectiveSourceDescriptor{master = master,objectiveType = typeof(WaitForNextWaveObjectiveController),source = (Object)(object)((EntityState)this).outer});}}public class Ending : GhostWaveControllerBaseState{public float speechTimer;public float speechInterval = 8f;public int speechVariant = 1;public int speechProgress = 1;public override void OnEnter(){//IL_001c: Unknown result type (might be due to invalid IL or missing references)//IL_0021: Unknown result type (might be due to invalid IL or missing references)//IL_0038: Unknown result type (might be due to invalid IL or missing references)//IL_003d: 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)base.OnEnter();PlaySoundForViewedCameras("Play_moonBrother_swing_horizontal");if (NetworkServer.active){GameObject obj = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/LogPickup.prefab").WaitForCompletion(), new Vector3(-3.090973f, 65.82108f, 42.75804f), Quaternion.identity);obj.GetComponentInChildren<UnlockPickup>().unlockableDef = UnlockableCatalog.GetUnlockableDef("Logs.Stages.BulwarksHaunt_GhostWave");obj.GetComponent<TeamFilter>().teamIndex = (TeamIndex)1;NetworkServer.Spawn(obj);BtpUtils.SpawnLunarPortal(ghostWaveController.oobCenter);}speechVariant = RoR2Application.rng.RangeInt(1, 4);ghostWaveController.OnCompleted();foreach (CombatDirector item in new List<CombatDirector>(CombatDirector.instancesList)){((Behaviour)item).enabled = false;}}public override void Update(){//IL_0094: Unknown result type (might be due to invalid IL or missing references)//IL_0099: Unknown result type (might be due to invalid IL or missing references)//IL_00a0: Unknown result type (might be due to invalid IL or missing references)//IL_00ac: Unknown result type (might be due to invalid IL or missing references)//IL_00b3: Unknown result type (might be due to invalid IL or missing references)//IL_00bf: Expected O, but got Unknownbase.Update();if (Run.instance.livingPlayerCount > 0){speechTimer -= Time.deltaTime;}if (speechTimer <= 0f){string text = "BULWARKSHAUNT_GHOSTWAVE_WIN_" + speechVariant + "_" + speechProgress;string text2 = "BULWARKSHAUNT_GHOSTWAVE_WIN_" + speechVariant + "_" + (speechProgress + 1);if (!Language.IsTokenInvalid(text) && NetworkServer.active){Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage{baseToken = text,formatStringToken = chatFormatStringToken,sender = null,sound = null});}if ((Language.IsTokenInvalid(text2) || Language.IsTokenInvalid(text)) && ((EntityState)this).isAuthority){((EntityState)this).outer.SetNextState((EntityState)(object)new FadeOut());}speechProgress++;speechTimer = speechInterval;}}}public class FadeOut : GhostWaveControllerBaseState{public float duration = 60f;public GameObject postProcessingObj;public PostProcessVolume postProcessVolume;public bool ended;public override void OnEnter(){base.OnEnter();postProcessingObj = ((Component)((EntityState)this).transform.Find("PostProcessing (FadeOut)")).gameObject;if (Object.op_Implicit((Object)(object)postProcessingObj)){postProcessingObj.SetActive(true);postProcessVolume = postProcessingObj.GetComponent<PostProcessVolume>();}}public override void Update(){base.Update();float num = Mathf.Clamp01(((EntityState)this).age / duration);num *= num;if (Object.op_Implicit((Object)(object)postProcessVolume)){postProcessVolume.weight = num;}if (!ended && num >= 1f){ended = true;PlaySoundForViewedCameras("Play_elite_haunt_spawn");if (NetworkServer.active){Run.instance.BeginGameOver(BulwarksHauntContent.GameEndings.BulwarksHaunt_HauntedEnding);}}}public override void FixedUpdate(){//IL_0051: Unknown result type (might be due to invalid IL or missing references)//IL_005c: Expected O, but got Unknown((EntityState)this).FixedUpdate();if (!ended){return;}foreach (CharacterBody readOnlyInstances in CharacterBody.readOnlyInstancesList){if (readOnlyInstances.hasEffectiveAuthority){EntityStateMachine val = EntityStateMachine.FindByCustomName(((Component)readOnlyInstances).gameObject, "Body");if (Object.op_Implicit((Object)(object)val) && !(val.state is Idle)){val.SetInterruptState((EntityState)new Idle(), (InterruptPriority)4);}}}}}public string chatFormatStringToken = "BULWARKSHAUNT_GHOSTWAVE_VOICE_FORMAT";public BulwarksHauntGhostWaveController ghostWaveController;public override void OnEnter(){((EntityState)this).OnEnter();ghostWaveController = ((EntityState)this).GetComponent<BulwarksHauntGhostWaveController>();}public override void Update(){((EntityState)this).Update();}public override void OnExit(){((EntityState)this).OnExit();}}public class WaveModifierObjectiveController : ObjectiveTracker{public bool mustBeDirty = true;public override string GenerateString(){mustBeDirty = false;BulwarksHauntWaveModifier bulwarksHauntWaveModifier = (BulwarksHauntWaveModifier)(object)base.sourceDescriptor.source;return string.Format(Language.GetString("OBJECTIVE_BULWARKSHAUNT_GHOSTWAVE_MODIFIERACTIVE"), Language.GetString(bulwarksHauntWaveModifier.nameToken), Language.GetString(bulwarksHauntWaveModifier.descriptionToken));}public override bool IsDirty(){return mustBeDirty;}}public static bool bakeNodesAtRuntime = false;public static CheckBoxOption coopRespawnEachWave;public static CheckBoxOption finalWaveAllModifiers;public static CheckBoxOption moreFrequentModifiers;public static CheckBoxOption superFrequentModifiers;public static StringInputFieldOption bannedEnemiesNames;public static DccsPool dpBulwarksHaunt_GhostWaveInteractables;public static DccsPool dpBulwarksHaunt_GhostWaveMonsters;public static Dictionary<int, List<KilledEnemyData>> killedEnemiesPerStage = new Dictionary<int, List<KilledEnemyData>>();public static Dictionary<int, Xoroshiro128Plus> waveRng = new Dictionary<int, Xoroshiro128Plus>();public static DirectorCardCategorySelection dccsBulwarksHaunt_GhostWaveInteractables;public static DirectorCardCategorySelection dccsBulwarksHaunt_GhostWaveMonsters;public static GameObject directorObj;public static GameObject gameManagerObj;public static GameObject ghostWaveControllerObj;public static GameObject ghostWaveControllerObjPrefab;public static GameObject sceneInfoObj;public static int maxWaves = 7;public static int waveEnemyHardCap = 120;public static List<BodyIndex> bannedEnemiesBodyIndices = new List<BodyIndex>();public static MapNodeGroup airNodeGroup;public static MapNodeGroup groundNodeGroup;public static NodeGraph airNodeGraph;public static NodeGraph groundNodeGraph;public static SceneDef sceneDef;public static Texture waveModifierNotificationIcon;private static DateTime debugTimestamp;public static void PlaySoundForViewedCameras(string soundName){foreach (CameraRigController item in CameraRigController.instancesList.Where((CameraRigController x) => x.localUserViewer != null)){Util.PlaySound(soundName, ((Component)item).gameObject);}}public static void RebuildBannedEnemiesList(string newBannedEnemiesList){//IL_0034: Unknown result type (might be due to invalid IL or missing references)//IL_0039: Unknown result type (might be due to invalid IL or missing references)//IL_003a: Unknown result type (might be due to invalid IL or missing references)//IL_003c: Invalid comparison between Unknown and I4//IL_0043: Unknown result type (might be due to invalid IL or missing references)if (bannedEnemiesBodyIndices == null){bannedEnemiesBodyIndices = new List<BodyIndex>();}bannedEnemiesBodyIndices.Clear();string[] array = newBannedEnemiesList.Split(new char[1] { ',' });for (int i = 0; i < array.Length; i++){BodyIndex val = BodyCatalog.FindBodyIndex(array[i]);if ((int)val != -1){bannedEnemiesBodyIndices.Add(val);}}}public static CharacterSpawnCard GenerateSpawnCardForKilledEnemy(KilledEnemyData killedEnemyData){//IL_0001: Unknown result type (might be due to invalid IL or missing references)//IL_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0027: Unknown result type (might be due to invalid IL or missing references)//IL_002c: Unknown result type (might be due to invalid IL or missing references)//IL_0033: Unknown result type (might be due to invalid IL or missing references)//IL_0038: Unknown result type (might be due to invalid IL or missing references)//IL_0086: 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_00aa: Unknown result type (might be due to invalid IL or missing references)GameObject bodyPrefab = BodyCatalog.GetBodyPrefab(killedEnemyData.bodyIndex);CharacterBody component = bodyPrefab.GetComponent<CharacterBody>();string bodyName = BodyCatalog.GetBodyName(killedEnemyData.bodyIndex);CharacterSpawnCard val = ScriptableObject.CreateInstance<CharacterSpawnCard>();((SpawnCard)val).hullSize = component.hullClassification;((SpawnCard)val).prefab = MasterCatalog.GetMasterPrefab(MasterCatalog.FindAiMasterIndexForBody(killedEnemyData.bodyIndex));val.itemsToGrant = killedEnemyData.inventory.ToArray();val.equipmentToGrant = (EquipmentDef[])(object)new EquipmentDef[0];if ((Object)(object)killedEnemyData.equipment != (Object)null){ArrayUtils.ArrayAppend<EquipmentDef>(ref val.equipmentToGrant, ref killedEnemyData.equipment);}((SpawnCard)val).nodeGraphType = (GraphType)1;CharacterMotor component2 = bodyPrefab.GetComponent<CharacterMotor>();if (Object.op_Implicit((Object)(object)component2)){((SpawnCard)val).nodeGraphType = (GraphType)(component2.isFlying ? 1 : 0);}if (bodyName == "GrandParentBody"){((SpawnCard)val).nodeGraphType = (GraphType)0;}if ((Object)(object)((SpawnCard)val).prefab == (Object)null){return null;}return val;}public override void OnPluginAwake(){((BaseLoadableAsset)this).OnPluginAwake();ghostWaveControllerObjPrefab = Utils.CreateBlankPrefab("GhostWaveController2", true);NetworkingAPI.RegisterMessageType<GhostWaveControllerBaseState.MonsterWaves.SyncTotalEnemies>();NetworkingAPI.RegisterMessageType<GhostWaveControllerBaseState.MonsterWaves.SyncKilledEnemies>();}public override void Load(){//IL_0068: Unknown result type (might be due to invalid IL or missing references)//IL_0072: Expected O, but got Unknown//IL_0079: Unknown result type (might be due to invalid IL or missing references)//IL_0083: Expected O, but got Unknown//IL_000e: Unknown result type (might be due to invalid IL or missing references)//IL_0018: Expected O, but got Unknown//IL_001f: Unknown result type (might be due to invalid IL or missing references)//IL_0029: Expected O, but got Unknownif (bakeNodesAtRuntime){MapNodeGroup.Bake += new hook_Bake(MapNodeGroup_Bake1);MapNodeGroup.Bake += new Manipulator(MapNodeGroup_Bake);}SetUpStage();SetUpGameEnding();SetUpGamemode();SetUpWaveModifiers();((BaseLoadableAsset)this).OnLoad();base.asset = sceneDef;BulwarksHauntContent.Resources.sceneDefs.Add(sceneDef);MusicTrackCatalog.Init += new hook_Init(SetUpStageMusic);BazaarController.SetUpSeerStations += new hook_SetUpSeerStations(BazaarController_SetUpSeerStations);}public void SetUpStage(){//IL_012c: Unknown result type (might be due to invalid IL or missing references)//IL_0131: Unknown result type (might be due to invalid IL or missing references)//IL_0176: Unknown result type (might be due to invalid IL or missing references)//IL_0407: Unknown result type (might be due to invalid IL or missing references)//IL_01ed: Unknown result type (might be due to invalid IL or missing references)//IL_0430: 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_043c: Unknown result type (might be due to invalid IL or missing references)//IL_043e: Unknown result type (might be due to invalid IL or missing references)//IL_048c: Unknown result type (might be due to invalid IL or missing references)//IL_021f: Unknown result type (might be due to invalid IL or missing references)//IL_0224: Unknown result type (might be due to invalid IL or missing references)//IL_022b: Unknown result type (might be due to invalid IL or missing references)//IL_0232: Unknown result type (might be due to invalid IL or missing references)//IL_0239: Unknown result type (might be due to invalid IL or missing references)//IL_0240: Unknown result type (might be due to invalid IL or missing references)//IL_02ba: Unknown result type (might be due to invalid IL or missing references)//IL_04b5: Unknown result type (might be due to invalid IL or missing references)//IL_04ba: Unknown result type (might be due to invalid IL or missing references)//IL_04c1: Unknown result type (might be due to invalid IL or missing references)//IL_04c3: Unknown result type (might be due to invalid IL or missing references)//IL_02d1: Unknown result type (might be due to invalid IL or missing references)//IL_02d6: Unknown result type (might be due to invalid IL or missing references)//IL_02dd: Unknown result type (might be due to invalid IL or missing references)//IL_02e4: Unknown result type (might be due to invalid IL or missing references)//IL_02eb: Unknown result type (might be due to invalid IL or missing references)//IL_02f2: Unknown result type (might be due to invalid IL or missing references)//IL_02fc: Unknown result type (might be due to invalid IL or missing references)//IL_0301: Unknown result type (might be due to invalid IL or missing references)//IL_0306: Unknown result type (might be due to invalid IL or missing references)//IL_053c: Unknown result type (might be due to invalid IL or missing references)//IL_0541: Unknown result type (might be due to invalid IL or missing references)//IL_0547: Unknown result type (might be due to invalid IL or missing references)//IL_054c: Unknown result type (might be due to invalid IL or missing references)//IL_055a: Unknown result type (might be due to invalid IL or missing references)//IL_0562: Unknown result type (might be due to invalid IL or missing references)//IL_0564: Unknown result type (might be due to invalid IL or missing references)//IL_056e: Expected O, but got Unknown//IL_0575: Unknown result type (might be due to invalid IL or missing references)//IL_057a: Unknown result type (might be due to invalid IL or missing references)//IL_0580: Unknown result type (might be due to invalid IL or missing references)//IL_0585: Unknown result type (might be due to invalid IL or missing references)//IL_0593: Unknown result type (might be due to invalid IL or missing references)//IL_059b: Unknown result type (might be due to invalid IL or missing references)//IL_059d: Unknown result type (might be due to invalid IL or missing references)//IL_05a7: Expected O, but got Unknown//IL_05bf: Unknown result type (might be due to invalid IL or missing references)//IL_05c6: Expected O, but got Unknown//IL_05dc: Unknown result type (might be due to invalid IL or missing references)//IL_05e1: Unknown result type (might be due to invalid IL or missing references)//IL_05ec: Unknown result type (might be due to invalid IL or missing references)//IL_05f8: Expected O, but got Unknown//IL_064c: Unknown result type (might be due to invalid IL or missing references)//IL_0653: Expected O, but got UnknownAssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(BulwarksHauntPlugin.pluginInfo.Location), "bulwarkshauntsceneassetbundle"));SceneManager.sceneLoaded += SceneManager_sceneLoaded;sceneDef = ScriptableObject.CreateInstance<SceneDef>();sceneDef.nameToken = "MAP_BULWARKSHAUNT_GHOSTWAVE_NAME";sceneDef.subtitleToken = "MAP_BULWARKSHAUNT_GHOSTWAVE_SUBTITLE";sceneDef.loreToken = "MAP_BULWARKSHAUNT_GHOSTWAVE_LORE";sceneDef.baseSceneNameOverride = "BulwarksHaunt_GhostWave";sceneDef.cachedName = "BulwarksHaunt_GhostWave";sceneDef.blockOrbitalSkills = false;sceneDef.dioramaPrefab = BulwarksHauntPlugin.AssetBundle.LoadAsset<GameObject>("Assets/Mods/Bulwark's Haunt/GhostWave/DioramaDisplay.prefab");ModelPanelParameters obj = sceneDef.dioramaPrefab.AddComponent<ModelPanelParameters>();obj.cameraPositionTransform = ((Component)obj).transform.Find("Camera Position");obj.focusPointTransform = ((Component)obj).transform.Find("Focus Point");obj.minDistance = 10f;obj.maxDistance = 120f;sceneDef.isOfflineScene = false;sceneDef.previewTexture = (Texture)(object)BulwarksHauntPlugin.AssetBundle.LoadAsset<Sprite>("Assets/Mods/Bulwark's Haunt/GhostWave/texBulwarksHaunt_GhostWavePreview.png").texture;sceneDef.portalMaterial = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/bazaar/matBazaarSeerFrozenwall.mat").WaitForCompletion());sceneDef.portalMaterial.SetTexture("_MainTex", sceneDef.previewTexture);sceneDef.portalSelectionMessageString = "BAZAAR_SEER_BULWARKSHAUNT_GHOSTWAVE";sceneDef.sceneType = (SceneType)2;sceneDef.shouldIncludeInLogbook = true;sceneDef.stageOrder = 101;sceneDef.suppressNpcEntry = false;sceneDef.suppressPlayerEntry = false;sceneDef.validForRandomSelection = false;string path;if (bakeNodesAtRuntime){GameObject obj2 = Utils.CreateBlankPrefab("BulwarksHaunt_GhostWaveGroundNodeGroup", false);GameObject val = Object.Instantiate<GameObject>(BulwarksHauntPlugin.AssetBundle.LoadAsset<GameObject>("Assets/Mods/Bulwark's Haunt/GhostWave/World.prefab"));groundNodeGroup = obj2.AddComponent<MapNodeGroup>();groundNodeGroup.graphType = (GraphType)0;Mesh mesh = BulwarksHauntPlugin.AssetBundle.LoadAsset<GameObject>("Assets/Mods/Bulwark's Haunt/GhostWave/NavMeshes/navmesh 4.prefab").GetComponentInChildren<MeshFilter>().mesh;Vector3[] vertices = mesh.vertices;foreach (Vector3 val2 in vertices){groundNodeGroup.AddNode(new Vector3(val2.x, val2.y, val2.z));}groundNodeGraph = ScriptableObject.CreateInstance<NodeGraph>();groundNodeGraph.Clear();((Object)groundNodeGraph).name = "BulwarksHaunt_GhostWaveGroundNodeGraph";groundNodeGroup.UpdateNoCeilingMasks();groundNodeGroup.UpdateTeleporterMasks();groundNodeGroup.Bake(groundNodeGraph);airNodeGroup = Utils.CreateBlankPrefab("BulwarksHaunt_GhostWaveAirNodeGroup", false).AddComponent<MapNodeGroup>();airNodeGroup.graphType = (GraphType)1;vertices = mesh.vertices;foreach (Vector3 val3 in vertices){airNodeGroup.AddNode(new Vector3(val3.x, val3.y, val3.z) + 12f * Vector3.up);}airNodeGraph = ScriptableObject.CreateInstance<NodeGraph>();airNodeGraph.Clear();((Object)airNodeGraph).name = "BulwarksHaunt_GhostWaveAirNodeGraph";airNodeGroup.UpdateNoCeilingMasks();airNodeGroup.Bake(airNodeGraph);Object.Destroy((Object)(object)val);path = Path.Combine(Application.persistentDataPath, "BulwarksHaunt", "BakedNodes");if (!Directory.Exists(path)){Directory.CreateDirectory(path);}SaveBakedNodesToFile(groundNodeGroup, groundNodeGraph);SaveBakedNodesToFile(airNodeGroup, airNodeGraph);}else{DateTime now = DateTime.Now;BulwarksHauntPlugin.logger.LogMessage((object)"Loading prebaked nodes...");groundNodeGraph = LoadBakedNodesFromFile((GraphType)0);((Object)groundNodeGraph).name = "BulwarksHaunt_GhostWaveGroundNodeGraph";groundNodeGroup = Utils.CreateBlankPrefab("BulwarksHaunt_GhostWaveGroundNodeGroup", false).AddComponent<MapNodeGroup>();groundNodeGroup.graphType = (GraphType)0;groundNodeGroup.nodeGraph = groundNodeGraph;Node[] nodes = groundNodeGraph.nodes;foreach (Node val4 in nodes){groundNodeGroup.AddNode(val4.position);}airNodeGraph = LoadBakedNodesFromFile((GraphType)1);((Object)airNodeGraph).name = "BulwarksHaunt_GhostWaveAirNodeGraph";airNodeGroup = Utils.CreateBlankPrefab("BulwarksHaunt_GhostWaveAirNodeGroup", false).AddComponent<MapNodeGroup>();airNodeGroup.graphType = (GraphType)1;airNodeGroup.nodeGraph = airNodeGraph;nodes = airNodeGraph.nodes;foreach (Node val5 in nodes){airNodeGroup.AddNode(val5.position);}BulwarksHauntPlugin.logger.LogMessage((object)("Loaded baked nodes! " + DateTime.Now.Subtract(now).TotalSeconds + "s elapsed"));}dccsBulwarksHaunt_GhostWaveMonsters = ScriptableObject.CreateInstance<DirectorCardCategorySelection>();dccsBulwarksHaunt_GhostWaveMonsters.AddCategory("Normal", 1f);dccsBulwarksHaunt_GhostWaveMonsters.AddCard(0, new DirectorCard{spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/Wisp/cscLesserWisp.asset").WaitForCompletion(),selectionWeight = 100,spawnDistance = (MonsterSpawnDistance)0});dccsBulwarksHaunt_GhostWaveMonsters.AddCard(0, new DirectorCard{spawnCard = (SpawnCard)(object)Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/Base/GreaterWisp/cscGreaterWisp.asset").WaitForCompletion(),selectionWeight = 40,spawnDistance = (MonsterSpawnDistance)0});dpBulwarksHaunt_GhostWaveMonsters = ScriptableObject.CreateInstance<DccsPool>();DccsPool obj3 = dpBulwarksHaunt_GhostWaveMonsters;Category[] array = new Category[1];Category val6 = new Category();val6.name = "Base";val6.alwaysIncluded = (PoolEntry[])(object)new PoolEntry[1]{new PoolEntry{dccs = dccsBulwarksHaunt_GhostWaveMonsters,weight = 1f}};val6.categoryWeight = 1f;val6.includedIfConditionsMet = (ConditionalPoolEntry[])(object)new ConditionalPoolEntry[0];val6.includedIfNoConditionsMet = (PoolEntry[])(object)new PoolEntry[0];array[0] = val6;obj3.poolCategories = (Category[])(object)array;dccsBulwarksHaunt_GhostWaveInteractables = ScriptableObject.CreateInstance<DirectorCardCategorySelection>();dpBulwarksHaunt_GhostWaveInteractables = ScriptableObject.CreateInstance<DccsPool>();DccsPool obj4 = dpBulwarksHaunt_GhostWaveInteractables;Category[] array2 = new Category[1];val6 = new Category();val6.name = "Base";val6.alwaysIncluded = (PoolEntry[])(object)new PoolEntry[0];val6.categoryWeight = 1f;val6.includedIfConditionsMet = (ConditionalPoolEntry[])(object)new ConditionalPoolEntry[0];val6.includedIfNoConditionsMet = (PoolEntry[])(object)new PoolEntry[0];array2[0] = val6;obj4.poolCategories = (Category[])(object)array2;UnlockableDef val7 = ScriptableObject.CreateInstance<UnlockableDef>();val7.cachedName = "Logs.Stages.BulwarksHaunt_GhostWave";val7.nameToken = "UNLOCKABLE_LOG_STAGES_BULWARKSHAUNT_GHOSTWAVE";BulwarksHauntContent.Resources.unlockableDefs.Add(val7);static NodeGraph LoadBakedNodesFromFile(GraphType graphType){//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_0008: Invalid comparison between Unknown and I4//IL_004f: Unknown result type (might be due to invalid IL or missing references)//IL_0054: Unknown result type (might be due to invalid IL or missing references)//IL_0064: Expected O, but got Unknownstring text = "Ground";if ((int)graphType == 1){text = "Air";}string directoryName = Path.GetDirectoryName(BulwarksHauntPlugin.pluginInfo.Location);BakedNodes bakedNodes = JsonConvert.DeserializeObject<BakedNodes>(new UTF8Encoding().GetString(File.ReadAllBytes(Path.Combine(directoryName, "BakedNodeGraph_" + sceneDef.baseSceneName + "_" + text))), new JsonSerializerSettings{Culture = CultureInfo.InvariantCulture});NodeGraph obj5 = ScriptableObject.CreateInstance<NodeGraph>();obj5.Clear();obj5.nodes = bakedNodes.nodes.Select(delegate(NodeSerialized x){//IL_0006: Unknown result type (might be due to invalid IL or missing references)//IL_000c: Expected O, but got Unknown//IL_001a: 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_0028: Unknown result type (might be due to invalid IL or missing references)//IL_0030: Unknown result type (might be due to invalid IL or missing references)//IL_0035: Unknown result type (might be due to invalid IL or missing references)//IL_0052: Unknown result type (might be due to invalid IL or missing references)//IL_0057: Unknown result type (might be due to invalid IL or missing references)//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_007a: Unknown result type (might be due to invalid IL or missing references)SerializableBitArray val8 = new SerializableBitArray(x.lineOfSightMaskLength);val8.bytes = x.lineOfSightMaskBytes;Node result = default(Node);result.flags = x.flags;result.forbiddenHulls = x.forbiddenHulls;result.gateIndex = x.gateIndex;result.lineOfSightMask = val8;result.linkListIndex = x.linkListIndex;result.position = new Vector3(x.x, x.y, x.z);return result;}).ToArray();obj5.links = bakedNodes.links.ToArray();obj5.gateNames = bakedNodes.gateNames.ToList();obj5.OnNodeCountChanged();obj5.RebuildBlockMap();return obj5;}void SaveBakedNodesToFile(MapNodeGroup mapNodeGroup, NodeGraph nodeGraph){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Invalid comparison between Unknown and I4//IL_007d: Unknown result type (might be due to invalid IL or missing references)//IL_0082: Unknown result type (might be due to invalid IL or missing references)//IL_0092: Expected O, but got Unknownstring text2 = "Ground";if ((int)mapNodeGroup.graphType == 1){text2 = "Air";}BakedNodes bakedNodes2 = default(BakedNodes);bakedNodes2.nodes = nodeGraph.nodes.Select(delegate(Node x){//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_001c: 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_002e: 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_0040: 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)//IL_004d: 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_0053: Unknown result type (might be due to invalid IL or missing references)//IL_005a: Unknown result type (might be due to invalid IL or missing references)//IL_0067: Unknown result type (might be due to invalid IL or missing references)//IL_0079: Unknown result type (might be due to invalid IL or missing references)//IL_008b: Unknown result type (might be due to invalid IL or missing references)//IL_008c: 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)NodeSerialized result2 = default(NodeSerialized);result2.x = x.position.x;result2.y = x.position.y;result2.z = x.position.z;result2.flags = x.flags;result2.forbiddenHulls = x.forbiddenHulls;result2.gateIndex = x.gateIndex;result2.lineOfSightMaskBytes = x.lineOfSightMask.bytes;result2.lineOfSightMaskLength = x.lineOfSightMask.length;result2.linkListIndex = x.linkListIndex;return result2;}).ToArray();bakedNodes2.links = nodeGraph.links.ToArray();bakedNodes2.gateNames = nodeGraph.gateNames.ToList();string s = JsonConvert.SerializeObject((object)bakedNodes2, new JsonSerializerSettings{Culture = CultureInfo.InvariantCulture});File.WriteAllBytes(Path.Combine(path, "BakedNodeGraph_" + sceneDef.baseSceneName + "_" + text2), new UTF8Encoding().GetBytes(s));}}public void SetUpGameEnding(){//IL_001d: Unknown result type (might be due to invalid IL or missing references)//IL_0022: Unknown result type (might be due to invalid IL or missing references)//IL_0027: Unknown result type (might be due to invalid IL or missing references)//IL_003e: 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_0048: 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_0078: Unknown result type (might be due to invalid IL or missing references)//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)GameEndingDef val = ScriptableObject.CreateInstance<GameEndingDef>();val.cachedName = "BulwarksHaunt_HauntedEnding";val.backgroundColor = Color32.op_Implicit(new Color32((byte)76, (byte)43, (byte)30, byte.MaxValue));val.foregroundColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)48, byte.MaxValue));val.endingTextToken = "GAME_RESULT_UNKNOWN";val.icon = BulwarksHauntPlugin.AssetBundle.LoadAsset<Sprite>("Assets/Mods/Bulwark's Haunt/texGameResultHauntedIcon.png");val.material = Addressables.LoadAssetAsync<GameEndingDef>((object)"RoR2/Base/ClassicRun/LimboEnding.asset").WaitForCompletion().material;val.isWin = true;val.showCredits = false;val.gameOverControllerState = new SerializableEntityStateType(typeof(LingerShort));val.lunarCoinReward = 0u;BulwarksHauntContent.GameEndings.BulwarksHaunt_HauntedEnding = val;BulwarksHauntContent.Resources.gameEndingDefs.Add(val);}public void SetUpGamemode(){//IL_0022: Unknown result type (might be due to invalid IL or missing references)//IL_0027: Unknown result type (might be due to invalid IL or missing references)//IL_0028: 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_002e: 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_0052: Unknown result type (might be due to invalid IL or missing references)//IL_0057: Unknown result type (might be due to invalid IL or missing references)//IL_005e: Unknown result type (might be due to invalid IL or missing references)//IL_006e: Unknown result type (might be due to invalid IL or missing references)ghostWaveControllerObjPrefab.AddComponent<BulwarksHauntGhostWaveController>();EntityStateMachine val = ghostWaveControllerObjPrefab.AddComponent<EntityStateMachine>();val.mainStateType = (val.initialStateType = new SerializableEntityStateType(typeof(GhostWaveControllerBaseState.Intro)));ghostWaveControllerObjPrefab.AddComponent<NetworkStateMachine>().stateMachines = (EntityStateMachine[])(object)new EntityStateMachine[1] { val };GameObject val2 = new GameObject("PostProcessing (FadeOut)");val2.SetActive(false);val2.layer = LayerIndex.postProcess.intVal;val2.transform.SetParent(ghostWaveControllerObjPrefab.transform);PostProcessVolume obj = val2.AddComponent<PostProcessVolume>();obj.isGlobal = true;obj.priority = 70f;obj.weight = 0f;obj.sharedProfile = BulwarksHauntPlugin.AssetBundle.LoadAsset<PostProcessProfile>("Assets/Mods/Bulwark's Haunt/GhostWave/ppGhostWaveFadeOut.asset");Run.onRunStartGlobal += Run_onRunStartGlobal;GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal;BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState));BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState.Intro));BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState.MonsterWaves));BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState.BreakBetweenWaves));BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState.Ending));BulwarksHauntContent.Resources.entityStateTypes.Add(typeof(GhostWaveControllerBaseState.FadeOut));bannedEnemiesNames = ModConfig.AddStringInputFieldOption(BulwarksHauntPlugin.config, "Settings", "Banned Enemies", "BrotherHurtBody,GeepBody,GipBody", "Comma-separated list of enemies to prevent from being tracked towards A Moment, Haunted.", (SubmitEnum)6, (Action<string>)RebuildBannedEnemiesList);coopRespawnEachWave = ModConfig.AddCheckBoxOption(BulwarksHauntPlugin.config, "Settings", "Respawn Players Each Wave", true, "If true, dead players will be respawned after each wave completion.", (Action<bool>)null);moreFrequentModifiers = ModConfig.AddCheckBoxOption(BulwarksHauntPlugin.config, "Challenge", "Frequent Modifiers", false, "If true, Wave Modifiers will be activated every 2 waves instead of every 4.", (Action<bool>)null);superFrequentModifiers = ModConfig.AddCheckBoxOption(BulwarksHauntPlugin.config, "Challenge", "Super Frequent Modifiers", false, "If true, Wave Modifiers will be activated every wave.", (Action<bool>)null);finalWaveAllModifiers = ModConfig.AddCheckBoxOption(BulwarksHauntPlugin.config, "Challenge", "All Modifier Final Wave", false, "If true, the Final Wave will feature all Wave Modifiers at once. You'll probably lose.", (Action<bool>)null);}public void SetUpWaveModifiers(){//IL_0020: Unknown result type (might be due to invalid IL or missing references)//IL_002a: Expected O, but got Unknown//IL_031e: 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)waveModifierNotificationIcon = (Texture)(object)BulwarksHauntPlugin.AssetBundle.LoadAsset<Sprite>("Assets/Mods/Bulwark's Haunt/texGhostWaveModifierIcon.png").texture;NotificationUIController.SetUpNotification += new hook_SetUpNotification(NotificationUIController_SetUpNotification);SceneCatalog.onMostRecentSceneDefChanged += OnSceneChanged;List<BulwarksHauntWaveModifier> list = new List<BulwarksHauntWaveModifier>();BulwarksHauntWaveModifier bulwarksHauntWaveModifier = ScriptableObject.CreateInstance<BulwarksHauntWaveModifier>();bulwarksHauntWaveModifier.CachedName = "Cold";bulwarksHauntWaveModifier.AutoPopulateTokens();list.Add(bulwarksHauntWaveModifier);BulwarksHauntWaveModifier bulwarksHauntWaveModifier2 = ScriptableObject.CreateInstance<BulwarksHauntWaveModifier>();bulwarksHauntWaveModifier2.CachedName = "SlowAttackSpeed";bulwarksHauntWaveModifier2.AutoPopulateTokens();bulwarksHauntWaveModifier2.onActivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier2.onActivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));bulwarksHauntWaveModifier2.onDeactivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier2.onDeactivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));list.Add(bulwarksHauntWaveModifier2);BulwarksHauntWaveModifier bulwarksHauntWaveModifier3 = ScriptableObject.CreateInstance<BulwarksHauntWaveModifier>();bulwarksHauntWaveModifier3.CachedName = "Stone";bulwarksHauntWaveModifier3.AutoPopulateTokens();bulwarksHauntWaveModifier3.onActivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier3.onActivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));bulwarksHauntWaveModifier3.onDeactivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier3.onDeactivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));list.Add(bulwarksHauntWaveModifier3);BulwarksHauntWaveModifier bulwarksHauntWaveModifier4 = ScriptableObject.CreateInstance<BulwarksHauntWaveModifier>();bulwarksHauntWaveModifier4.CachedName = "NoSpecial";bulwarksHauntWaveModifier4.AutoPopulateTokens();bulwarksHauntWaveModifier4.onActivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier4.onActivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));bulwarksHauntWaveModifier4.onDeactivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier4.onDeactivated, new BulwarksHauntWaveModifier.WaveModifierEventHandler(ForceRecalculateStats));list.Add(bulwarksHauntWaveModifier4);BulwarksHauntWaveModifier waveModifier = ScriptableObject.CreateInstance<BulwarksHauntWaveModifier>();waveModifier.CachedName = "Meteors";waveModifier.AutoPopulateTokens();MeteorStormController meteorStormController = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/MeteorStorm").GetComponent<MeteorStormController>();float meteorTimer = 0f;float meteorInterval = 1f;int meteorCount = 3;float meteorRadius = 6f;float meteorBaseDamage = 20f;BulwarksHauntWaveModifier bulwarksHauntWaveModifier5 = waveModifier;bulwarksHauntWaveModifier5.onActivated = (BulwarksHauntWaveModifier.WaveModifierEventHandler)Delegate.Combine(bulwarksHauntWaveModifier5

TheMysticSword-MysticsRisky2Utils/MysticsRisky2Utils.dll

Decompiled 6 days ago

Download (216.3KB)

The result has been truncated due to the large size, download it to view full contents!

using System;using System.Collections;using System.Collections.Generic;using System.Diagnostics;using System.Globalization;using System.IO;using System.Linq;using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.Versioning;using System.Security;using System.Security.Permissions;using System.Text;using BepInEx;using BepInEx.Bootstrap;using BepInEx.Configuration;using BepInEx.Logging;using EntityStates;using HG;using HG.Coroutines;using IL.RoR2;using Mono.Cecil.Cil;using MonoMod.Cil;using MonoMod.RuntimeDetour;using MysticsRisky2Utils.BaseAssetTypes;using MysticsRisky2Utils.ContentManagement;using MysticsRisky2Utils.SoftDependencies;using On.RoR2;using On.RoR2.UI.LogBook;using R2API;using R2API.Networking;using R2API.Networking.Interfaces;using R2API.Utils;using RiskOfOptions;using RiskOfOptions.OptionConfigs;using RiskOfOptions.Options;using RoR2;using RoR2.Hologram;using RoR2.Navigation;using RoR2.Networking;using RoR2.Orbs;using RoR2.UI;using RoR2.UI.LogBook;using TMPro;using UnityEngine;using UnityEngine.AddressableAssets;using UnityEngine.Events;using UnityEngine.Networking;using UnityEngine.UI;[assembly: CompilationRelaxations(8)][assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)][assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)][assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")][assembly: AssemblyCompany("MysticsRisky2Utils")][assembly: AssemblyConfiguration("Release")][assembly: AssemblyFileVersion("1.0.0.0")][assembly: AssemblyInformationalVersion("1.0.0+a17e9a71d576e59ef74c208772bc83652ae276b8")][assembly: AssemblyProduct("MysticsRisky2Utils")][assembly: AssemblyTitle("MysticsRisky2Utils")][assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)][assembly: AssemblyVersion("1.0.0.0")][module: UnverifiableCode]namespace MysticsRisky2Utils{public static class BrotherInfection{private static GameObject _white;private static GameObject _green;private static GameObject _red;private static GameObject _blue;public static GameObject white{get{//IL_0012: 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)if ((Object)(object)_white == (Object)null){_white = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ItemInfection, White.prefab").WaitForCompletion();}return _white;}}public static GameObject green{get{//IL_0012: 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)if ((Object)(object)_green == (Object)null){_green = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ItemInfection, Green.prefab").WaitForCompletion();}return _green;}}public static GameObject red{get{//IL_0012: 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)if ((Object)(object)_red == (Object)null){_red = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ItemInfection, Red.prefab").WaitForCompletion();}return _red;}}public static GameObject blue{get{//IL_0012: 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)if ((Object)(object)_blue == (Object)null){_blue = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ItemInfection, Blue.prefab").WaitForCompletion();}return _blue;}}}public static class CharacterModelMaterialOverrides{private class MysticsRisky2UtilsCharacterModelMaterialOverridesComponent : MonoBehaviour{public List<string> activeOverrides = new List<string>();}public delegate void MaterialOverrideHandler(CharacterModel characterModel, ref Material material, ref bool ignoreOverlays);public struct MaterialOverrideInfo{public string key;public MaterialOverrideHandler handler;}[Serializable][CompilerGenerated]private sealed class <>c{public static readonly <>c <>9 = new <>c();public static hook_Awake <>9__0_0;public static Func<Instruction, bool> <>9__0_4;public static Func<Instruction, bool> <>9__0_5;public static Func<Instruction, bool> <>9__0_6;public static Manipulator <>9__0_1;public static Func<Instruction, bool> <>9__0_10;public static Func<Instruction, bool> <>9__0_12;public static Action<CharacterModel, ItemDisplay> <>9__0_13;public static Manipulator <>9__0_2;internal void <Init>b__0_0(orig_Awake orig, CharacterModel self){orig.Invoke(self);((Component)self).gameObject.AddComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>();}internal void <Init>b__0_1(ILContext il){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Expected O, but got Unknown//IL_009f: Unknown result type (might be due to invalid IL or missing references)//IL_00ac: 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_00e5: Unknown result type (might be due to invalid IL or missing references)//IL_0105: Unknown result type (might be due to invalid IL or missing references)<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();ILCursor val = new ILCursor(il);CS$<>8__locals0.ignoreOverlaysPos = 0;ILLabel val2 = default(ILLabel);if (!val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[4]{(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, ref CS$<>8__locals0.ignoreOverlaysPos),(Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref val2),(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterModel>(x, "activeOverlayCount")})){return;}<>c__DisplayClass0_1 CS$<>8__locals1 = new <>c__DisplayClass0_1();val.Emit(OpCodes.Ldarg, 0);val.Emit(OpCodes.Ldloc, 0);val.Emit(OpCodes.Ldarg, CS$<>8__locals0.ignoreOverlaysPos);CS$<>8__locals1.ignoreOverlays2 = false;val.EmitDelegate<Func<CharacterModel, Material, bool, Material>>((Func<CharacterModel, Material, bool, Material>)delegate(CharacterModel characterModel, Material material, bool ignoreOverlays){<>c__DisplayClass0_2 CS$<>8__locals2 = new <>c__DisplayClass0_2{component = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>()};if (Object.op_Implicit((Object)(object)CS$<>8__locals2.component)){MaterialOverrideInfo materialOverrideInfo = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => CS$<>8__locals2.component.activeOverrides.Contains(x.key));if (!materialOverrideInfo.Equals(default(MaterialOverrideInfo))){materialOverrideInfo.handler(characterModel, ref material, ref ignoreOverlays);}}CS$<>8__locals1.ignoreOverlays2 = ignoreOverlays;return material;});val.Emit(OpCodes.Stloc, 0);val.EmitDelegate<Func<bool>>((Func<bool>)(() => CS$<>8__locals1.ignoreOverlays2));val.Emit(OpCodes.Starg, CS$<>8__locals0.ignoreOverlaysPos);}internal bool <Init>b__0_4(Instruction x){ILLabel val = default(ILLabel);return ILPatternMatchingExt.MatchBrtrue(x, ref val);}internal bool <Init>b__0_5(Instruction x){return ILPatternMatchingExt.MatchLdarg(x, 0);}internal bool <Init>b__0_6(Instruction x){return ILPatternMatchingExt.MatchLdfld<CharacterModel>(x, "activeOverlayCount");}internal void <Init>b__0_2(ILContext il){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Expected O, but got Unknown//IL_0086: Unknown result type (might be due to invalid IL or missing references)//IL_0093: Unknown result type (might be due to invalid IL or missing references)<>c__DisplayClass0_3 CS$<>8__locals0 = new <>c__DisplayClass0_3();ILCursor val = new ILCursor(il);CS$<>8__locals0.itemDisplayPos = 0;if (!val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[2]{(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<ParentedPrefabDisplay>(x, "get_itemDisplay"),(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref CS$<>8__locals0.itemDisplayPos)}) || !val.TryGotoNext((MoveType)1, new Func<Instruction, bool>[1]{(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<ItemDisplay>(x, "SetVisibilityLevel")})){return;}val.Emit(OpCodes.Ldarg, 0);val.Emit(OpCodes.Ldloc, CS$<>8__locals0.itemDisplayPos);val.EmitDelegate<Action<CharacterModel, ItemDisplay>>((Action<CharacterModel, ItemDisplay>)delegate(CharacterModel characterModel, ItemDisplay itemDisplay){//IL_0079: Unknown result type (might be due to invalid IL or missing references)<>c__DisplayClass0_4 CS$<>8__locals1 = new <>c__DisplayClass0_4{component = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>()};if (Object.op_Implicit((Object)(object)CS$<>8__locals1.component)){MaterialOverrideInfo materialOverrideInfo = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => CS$<>8__locals1.component.activeOverrides.Contains(x.key));if (!materialOverrideInfo.Equals(default(MaterialOverrideInfo))){Material material = null;bool ignoreOverlays = false;materialOverrideInfo.handler(characterModel, ref material, ref ignoreOverlays);RendererInfo[] rendererInfos = itemDisplay.rendererInfos;for (int i = 0; i < rendererInfos.Length; i++){rendererInfos[i].renderer.material = material;}}}});}internal bool <Init>b__0_10(Instruction x){return ILPatternMatchingExt.MatchCallOrCallvirt<ParentedPrefabDisplay>(x, "get_itemDisplay");}internal bool <Init>b__0_12(Instruction x){return ILPatternMatchingExt.MatchCallOrCallvirt<ItemDisplay>(x, "SetVisibilityLevel");}internal void <Init>b__0_13(CharacterModel characterModel, ItemDisplay itemDisplay){//IL_0079: Unknown result type (might be due to invalid IL or missing references)<>c__DisplayClass0_4 CS$<>8__locals0 = new <>c__DisplayClass0_4{component = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>()};if (!Object.op_Implicit((Object)(object)CS$<>8__locals0.component)){return;}MaterialOverrideInfo materialOverrideInfo = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => CS$<>8__locals0.component.activeOverrides.Contains(x.key));if (!materialOverrideInfo.Equals(default(MaterialOverrideInfo))){Material material = null;bool ignoreOverlays = false;materialOverrideInfo.handler(characterModel, ref material, ref ignoreOverlays);RendererInfo[] rendererInfos = itemDisplay.rendererInfos;for (int i = 0; i < rendererInfos.Length; i++){rendererInfos[i].renderer.material = material;}}}}[CompilerGenerated]private sealed class <>c__DisplayClass0_0{public int ignoreOverlaysPos;internal bool <Init>b__3(Instruction x){return ILPatternMatchingExt.MatchLdarg(x, ref ignoreOverlaysPos);}}[CompilerGenerated]private sealed class <>c__DisplayClass0_1{public bool ignoreOverlays2;internal Material <Init>b__7(CharacterModel characterModel, Material material, bool ignoreOverlays){<>c__DisplayClass0_2 CS$<>8__locals0 = new <>c__DisplayClass0_2{component = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>()};if (Object.op_Implicit((Object)(object)CS$<>8__locals0.component)){MaterialOverrideInfo materialOverrideInfo = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => CS$<>8__locals0.component.activeOverrides.Contains(x.key));if (!materialOverrideInfo.Equals(default(MaterialOverrideInfo))){materialOverrideInfo.handler(characterModel, ref material, ref ignoreOverlays);}}ignoreOverlays2 = ignoreOverlays;return material;}internal bool <Init>b__8(){return ignoreOverlays2;}}[CompilerGenerated]private sealed class <>c__DisplayClass0_2{public MysticsRisky2UtilsCharacterModelMaterialOverridesComponent component;internal bool <Init>b__9(MaterialOverrideInfo x){return component.activeOverrides.Contains(x.key);}}[CompilerGenerated]private sealed class <>c__DisplayClass0_3{public int itemDisplayPos;internal bool <Init>b__11(Instruction x){return ILPatternMatchingExt.MatchStloc(x, ref itemDisplayPos);}}[CompilerGenerated]private sealed class <>c__DisplayClass0_4{public MysticsRisky2UtilsCharacterModelMaterialOverridesComponent component;internal bool <Init>b__14(MaterialOverrideInfo x){return component.activeOverrides.Contains(x.key);}}public static List<MaterialOverrideInfo> materialOverrides = new List<MaterialOverrideInfo>();internal static void Init(){//IL_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0019: Unknown result type (might be due to invalid IL or missing references)//IL_001f: Expected O, but got Unknown//IL_0038: Unknown result type (might be due to invalid IL or missing references)//IL_003d: Unknown result type (might be due to invalid IL or missing references)//IL_0043: Expected O, but got Unknown//IL_005c: Unknown result type (might be due to invalid IL or missing references)//IL_0061: Unknown result type (might be due to invalid IL or missing references)//IL_0067: Expected O, but got Unknownobject obj = <>c.<>9__0_0;if (obj == null){hook_Awake val = delegate(orig_Awake orig, CharacterModel self){orig.Invoke(self);((Component)self).gameObject.AddComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>();};<>c.<>9__0_0 = val;obj = (object)val;}CharacterModel.Awake += (hook_Awake)obj;object obj2 = <>c.<>9__0_1;if (obj2 == null){Manipulator val2 = delegate(ILContext il){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Expected O, but got Unknown//IL_009f: Unknown result type (might be due to invalid IL or missing references)//IL_00ac: 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_00e5: Unknown result type (might be due to invalid IL or missing references)//IL_0105: Unknown result type (might be due to invalid IL or missing references)ILCursor val5 = new ILCursor(il);int ignoreOverlaysPos = 0;ILLabel val6 = default(ILLabel);if (val5.TryGotoNext((MoveType)1, new Func<Instruction, bool>[4]{(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, ref ignoreOverlaysPos),(Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref val6),(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),(Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterModel>(x, "activeOverlayCount")})){val5.Emit(OpCodes.Ldarg, 0);val5.Emit(OpCodes.Ldloc, 0);val5.Emit(OpCodes.Ldarg, ignoreOverlaysPos);bool ignoreOverlays3 = false;val5.EmitDelegate<Func<CharacterModel, Material, bool, Material>>((Func<CharacterModel, Material, bool, Material>)delegate(CharacterModel characterModel, Material material, bool ignoreOverlays){MysticsRisky2UtilsCharacterModelMaterialOverridesComponent component2 = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>();if (Object.op_Implicit((Object)(object)component2)){MaterialOverrideInfo materialOverrideInfo2 = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => component2.activeOverrides.Contains(x.key));if (!materialOverrideInfo2.Equals(default(MaterialOverrideInfo))){materialOverrideInfo2.handler(characterModel, ref material, ref ignoreOverlays);}}ignoreOverlays3 = ignoreOverlays;return material;});val5.Emit(OpCodes.Stloc, 0);val5.EmitDelegate<Func<bool>>((Func<bool>)(() => ignoreOverlays3));val5.Emit(OpCodes.Starg, ignoreOverlaysPos);}};<>c.<>9__0_1 = val2;obj2 = (object)val2;}CharacterModel.UpdateRendererMaterials += (Manipulator)obj2;object obj3 = <>c.<>9__0_2;if (obj3 == null){Manipulator val3 = delegate(ILContext il){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_000d: Expected O, but got Unknown//IL_0086: Unknown result type (might be due to invalid IL or missing references)//IL_0093: Unknown result type (might be due to invalid IL or missing references)ILCursor val4 = new ILCursor(il);int itemDisplayPos = 0;if (val4.TryGotoNext((MoveType)1, new Func<Instruction, bool>[2]{(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<ParentedPrefabDisplay>(x, "get_itemDisplay"),(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref itemDisplayPos)}) && val4.TryGotoNext((MoveType)1, new Func<Instruction, bool>[1]{(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<ItemDisplay>(x, "SetVisibilityLevel")})){val4.Emit(OpCodes.Ldarg, 0);val4.Emit(OpCodes.Ldloc, itemDisplayPos);val4.EmitDelegate<Action<CharacterModel, ItemDisplay>>((Action<CharacterModel, ItemDisplay>)delegate(CharacterModel characterModel, ItemDisplay itemDisplay){//IL_0079: Unknown result type (might be due to invalid IL or missing references)MysticsRisky2UtilsCharacterModelMaterialOverridesComponent component = ((Component)characterModel).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>();if (Object.op_Implicit((Object)(object)component)){MaterialOverrideInfo materialOverrideInfo = materialOverrides.FirstOrDefault((MaterialOverrideInfo x) => component.activeOverrides.Contains(x.key));if (!materialOverrideInfo.Equals(default(MaterialOverrideInfo))){Material material2 = null;bool ignoreOverlays2 = false;materialOverrideInfo.handler(characterModel, ref material2, ref ignoreOverlays2);RendererInfo[] rendererInfos = itemDisplay.rendererInfos;for (int i = 0; i < rendererInfos.Length; i++){rendererInfos[i].renderer.material = material2;}}}});}};<>c.<>9__0_2 = val3;obj3 = (object)val3;}CharacterModel.UpdateMaterials += (Manipulator)obj3;}public static void SetOverrideActive(CharacterModel model, string key, bool active){//IL_0058: Unknown result type (might be due to invalid IL or missing references)//IL_005d: Unknown result type (might be due to invalid IL or missing references)//IL_0066: Unknown result type (might be due to invalid IL or missing references)//IL_006b: Unknown result type (might be due to invalid IL or missing references)//IL_006f: Unknown result type (might be due to invalid IL or missing references)//IL_0074: Unknown result type (might be due to invalid IL or missing references)MysticsRisky2UtilsCharacterModelMaterialOverridesComponent component = ((Component)model).GetComponent<MysticsRisky2UtilsCharacterModelMaterialOverridesComponent>();if (!Object.op_Implicit((Object)(object)component)){return;}bool flag = component.activeOverrides.Contains(key);if (flag == active){return;}if (flag){component.activeOverrides.Remove(key);}else{component.activeOverrides.Add(key);}model.materialsDirty = true;foreach (ParentedPrefabDisplay parentedPrefabDisplay in model.parentedPrefabDisplays){ParentedPrefabDisplay current = parentedPrefabDisplay;ItemDisplay itemDisplay = ((ParentedPrefabDisplay)(ref current)).itemDisplay;VisibilityLevel visibilityLevel = itemDisplay.visibilityLevel;itemDisplay.visibilityLevel = (VisibilityLevel)(-1);itemDisplay.SetVisibilityLevel(visibilityLevel);}}public static void AddOverride(string key, MaterialOverrideHandler handler){materialOverrides.Add(new MaterialOverrideInfo{key = key,handler = handler});}}public static class ChildLocatorAdditions{public struct Addition{public string modelName;public string transformLocation;public string childName;}public static List<Addition> list = new List<Addition>();internal static void Init(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got UnknownCharacterModel.Awake += new hook_Awake(CharacterModel_Awake);}private static void CharacterModel_Awake(orig_Awake orig, CharacterModel self){//IL_00d0: Unknown result type (might be due to invalid IL or missing references)orig.Invoke(self);if (!Object.op_Implicit((Object)(object)self.childLocator)){return;}foreach (Addition addition in list.FindAll((Addition x) => x.modelName == Utils.TrimCloneFromString(((Object)((Component)self).gameObject).name))){if (!self.childLocator.transformPairs.Any((NameTransformPair x) => x.name == addition.childName)){Transform val = ((Component)self).transform.Find(addition.transformLocation);if (Object.op_Implicit((Object)(object)val)){ref NameTransformPair[] transformPairs = ref self.childLocator.transformPairs;NameTransformPair val2 = new NameTransformPair{name = addition.childName,transform = val};ArrayUtils.ArrayAppend<NameTransformPair>(ref transformPairs, ref val2);}}}}}public static class ConCommandHelper{[Serializable][CompilerGenerated]private sealed class <>c{public static readonly <>c <>9 = new <>c();public static hook_InitConVars <>9__2_0;internal void <Init>b__2_0(orig_InitConVars orig, Console self){orig.Invoke(self);Dictionary<string, ConCommand> concommandCatalog = self.concommandCatalog;foreach (KeyValuePair<string, ConCommand> loadedConCommand in loadedConCommands){concommandCatalog[loadedConCommand.Key] = loadedConCommand.Value;}}}public static Dictionary<string, ConCommand> loadedConCommands = new Dictionary<string, ConCommand>();public static void Load(MethodInfo methodInfo){//IL_0015: Unknown result type (might be due to invalid IL or missing references)//IL_001a: Unknown result type (might be due to invalid IL or missing references)//IL_001c: Unknown result type (might be due to invalid IL or missing references)//IL_0021: Unknown result type (might be due to invalid IL or missing references)//IL_0026: Unknown result type (might be due to invalid IL or missing references)//IL_0032: 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_004d: Expected O, but got Unknown//IL_004e: Expected O, but got Unknownforeach (ConCommandAttribute customAttribute in ((MemberInfo)methodInfo).GetCustomAttributes<ConCommandAttribute>()){ConCommand value = new ConCommand{flags = customAttribute.flags,helpText = customAttribute.helpText,action = (ConCommandDelegate)Delegate.CreateDelegate(typeof(ConCommandDelegate), methodInfo)};loadedConCommands.Add(customAttribute.commandName.ToLower(CultureInfo.InvariantCulture), value);}}internal static void Init(){//IL_0014: Unknown result type (might be due to invalid IL or missing references)//IL_0019: Unknown result type (might be due to invalid IL or missing references)//IL_001f: Expected O, but got Unknownobject obj = <>c.<>9__2_0;if (obj == null){hook_InitConVars val = delegate(orig_InitConVars orig, Console self){orig.Invoke(self);Dictionary<string, ConCommand> concommandCatalog = self.concommandCatalog;foreach (KeyValuePair<string, ConCommand> loadedConCommand in loadedConCommands){concommandCatalog[loadedConCommand.Key] = loadedConCommand.Value;}};<>c.<>9__2_0 = val;obj = (object)val;}Console.InitConVars += (hook_InitConVars)obj;}}public static class ConfigOptions{public abstract class ConfigurableValue{public static List<ConfigurableValue> instancesList = new List<ConfigurableValue>();public List<string> stringsToAffect = new List<string>();public string key = "";public string id = "";public static ConfigurableValue<T> Create<T>(ConfigFile configFile, string section, string key, T defaultValue, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<T> onChanged = null){return new ConfigurableValue<T>(configFile, section, key, defaultValue, description, stringsToAffect, useDefaultValueConfigEntry, restartRequired, onChanged);}public static ConfigurableValue<int> CreateInt(string modGUID, string modName, ConfigFile configFile, string section, string key, int defaultValue, int min = 0, int max = 1000, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<int> onChanged = null){ConfigurableValue<int> configurableValue = Create(configFile, section, key, defaultValue, description, stringsToAffect, useDefaultValueConfigEntry, restartRequired, onChanged);if (SoftDependencyManager.RiskOfOptionsDependency.enabled){SoftDependencyManager.RiskOfOptionsDependency.AddOptionInt(modGUID, modName, configurableValue.bepinexConfigEntry, min, max, restartRequired);}return configurableValue;}public static ConfigurableValue<float> CreateFloat(string modGUID, string modName, ConfigFile configFile, string section, string key, float defaultValue, float min = 0f, float max = 1000f, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<float> onChanged = null){ConfigurableValue<float> configurableValue = Create(configFile, section, key, defaultValue, description, stringsToAffect, useDefaultValueConfigEntry, restartRequired, onChanged);if (SoftDependencyManager.RiskOfOptionsDependency.enabled){SoftDependencyManager.RiskOfOptionsDependency.AddOptionFloat(modGUID, modName, configurableValue.bepinexConfigEntry, min, max, restartRequired);}return configurableValue;}public static ConfigurableValue<bool> CreateBool(string modGUID, string modName, ConfigFile configFile, string section, string key, bool defaultValue, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<bool> onChanged = null){ConfigurableValue<bool> configurableValue = Create(configFile, section, key, defaultValue, description, stringsToAffect, useDefaultValueConfigEntry, restartRequired, onChanged);if (SoftDependencyManager.RiskOfOptionsDependency.enabled){SoftDependencyManager.RiskOfOptionsDependency.AddOptionBool(modGUID, modName, configurableValue.bepinexConfigEntry, restartRequired);}return configurableValue;}public static ConfigurableValue<string> CreateString(string modGUID, string modName, ConfigFile configFile, string section, string key, string defaultValue, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<string> onChanged = null){ConfigurableValue<string> configurableValue = Create(configFile, section, key, defaultValue, description, stringsToAffect, useDefaultValueConfigEntry, restartRequired, onChanged);if (SoftDependencyManager.RiskOfOptionsDependency.enabled){SoftDependencyManager.RiskOfOptionsDependency.AddOptionString(modGUID, modName, configurableValue.bepinexConfigEntry, restartRequired);}return configurableValue;}}public class ConfigurableValue<T> : ConfigurableValue{public ConfigEntry<T> bepinexConfigEntry;private ConfigEntry<bool> useDefaultValueConfigEntry;private T defaultValue;public T Value{get{if (useDefaultValueConfigEntry != null && useDefaultValueConfigEntry.Value){return defaultValue;}return bepinexConfigEntry.Value;}}public ConfigurableValue(ConfigFile configFile, string section, string key, T defaultValue, string description = "", List<string> stringsToAffect = null, ConfigEntry<bool> useDefaultValueConfigEntry = null, bool restartRequired = false, Action<T> onChanged = null){ConfigurableValue<T> configurableValue = this;id = Path.GetFileNameWithoutExtension(configFile.ConfigFilePath) + "." + section + "." + key;ConfigurableValue configurableValue2 = ConfigurableValue.instancesList.FirstOrDefault((ConfigurableValue x) => x.id == configurableValue.id);if (configurableValue2 != null){ConfigurableValue<T> configurableValue3 = configurableValue2 as ConfigurableValue<T>;bepinexConfigEntry = configurableValue3.bepinexConfigEntry;this.useDefaultValueConfigEntry = useDefaultValueConfigEntry;}else{bepinexConfigEntry = configFile.Bind<T>(section, key, defaultValue, description);ConfigurableValue.instancesList.Add(this);}this.useDefaultValueConfigEntry = useDefaultValueConfigEntry;base.key = key;this.defaultValue = defaultValue;if (stringsToAffect != null){base.stringsToAffect = stringsToAffect;}else{base.stringsToAffect = new List<string>();}if (onChanged != null){bepinexConfigEntry.SettingChanged += delegate{onChanged(configurableValue.bepinexConfigEntry.Value);reloadLogbook = true;};onChanged(bepinexConfigEntry.Value);reloadLogbook = true;}}public override string ToString(){return Convert.ToString(Value, CultureInfo.InvariantCulture);}public static implicit operator T(ConfigurableValue<T> configurableValue){return configurableValue.Value;}}private static bool reloadLogbook;internal static void Init(){//IL_0007: Unknown result type (might be due to invalid IL or missing references)//IL_0011: Expected O, but got Unknown//IL_0018: Unknown result type (might be due to invalid IL or missing references)//IL_0022: Expected O, but got UnknownLogBookController.Awake += new hook_Awake(LogBookController_Awake);Language.GetLocalizedStringByToken += new hook_GetLocalizedStringByToken(Language_GetLocalizedStringByToken);}private static void LogBookController_Awake(orig_Awake orig, LogBookController self){orig.Invoke(self);if (reloadLogbook){reloadLogbook = false;LogBookController.BuildStaticData();}}private static string Language_GetLocalizedStringByToken(orig_GetLocalizedStringByToken orig, Language self, string token){string text = orig.Invoke(self, token);foreach (ConfigurableValue item in ConfigurableValue.instancesList.FindAll((ConfigurableValue x) => x.stringsToAffect.Contains(token))){text = text.Replace("{" + item.key + "}", item.ToString());}return text;}}public static class CostTypeCreation{public struct CustomCostTypeInfo{public CostTypeDef costTypeDef;public Action<CostTypeIndex> onRegister;public CostTypeIndex index;}[Serializable][CompilerGenerated]private sealed class <>c{public static readonly <>c <>9 = new <>c();public static Action<List<CostTypeDef>> <>9__0_0;public static hook_Register <>9__0_1;internal void <Init>b__0_0(List<CostTypeDef> list){foreach (CustomCostTypeInfo customCostType in customCostTypes){list.Add(customCostType.costTypeDef);}}internal void <Init>b__0_1(orig_Register orig, CostTypeIndex costType, CostTypeDef costTypeDef){//IL_000e: 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_0051: Unknown result type (might be due to invalid IL or missing references)//IL_0065: Unknown result type (might be due to invalid IL or missing references)<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0{costTypeDef = costTypeDef};orig.Invoke(costType, CS$<>8__locals0.costTypeDef);CustomCostTypeInfo customCostTypeInfo = customCostTypes.FirstOrDefault((CustomCostTypeInfo x) => x.costTypeDef == CS$<>8__locals0.costTypeDef);if (!customCostTypeInfo.Equals(default(CustomCostTypeInfo))){customCostTypeInfo.index = costType;if (customCostTypeInfo.onRegister != null){customCostTypeInfo.onRegister(customCostTypeInfo.index);}}}}[CompilerGenerated]private sealed class <>c__DisplayClass0_0{public CostTypeDef costTypeDef;internal bool <Init>b__2(CustomCostTypeInfo x){return x.costTypeDef == costTypeDef;}}public static List<CustomCostTypeInfo> customCostTypes = new List<CustomCostTypeInfo>();internal static void Init(){//IL_003d: 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_0048: Expected O, but got UnknownCostTypeCatalog.modHelper.getAdditionalEntries += delegate(List<CostTypeDef> list){foreach (CustomCostTypeInfo customCostType in customCostTypes){list.Add(customCostType.costTypeDef);}};object obj = <>c.<>9__0_1;if (obj == null){hook_Register val = delegate(orig_Register orig, CostTypeIndex costType, CostTypeDef costTypeDef){//IL_000e: 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_0051: Unknown result type (might be due to invalid IL or missing references)//IL_0065: Unknown result type (might be due to invalid IL or missing references)orig.Invoke(costType, costTypeDef);CustomCostTypeInfo customCostTypeInfo = customCostTypes.FirstOrDefault((CustomCostTypeInfo x) => x.costTypeDef == costTypeDef);if (!customCostTypeInfo.Equals(default(CustomCostTypeInfo))){customCostTypeInfo.index = costType;if (customCostTypeInfo.onRegister != null){customCostTypeInfo.onRegister(customCostTypeInfo.index);}}};<>c.<>9__0_1 = val;obj = (object)val;}CostTypeCatalog.Register += (hook_Register)obj;}public static void CreateCostType(CustomCostTypeInfo customCostType){customCostTypes.Add(customCostType);}}public static class CustomTempVFXManagement{public struct VFXInfo{public GameObject prefab;public string child;public Func<CharacterBody, bool> condition;public Func<CharacterBody, float> radius;}public class MysticsRisky2UtilsTempVFX : MonoBehaviour{public enum VisualState{Enter,Exit}public Transform parentTransform;public bool rotateWithParent;public HealthComponent healthComponent;public GameObject[] enterObjects = (GameObject[])(object)new GameObject[0];public MonoBehaviour[] enterBehaviours = (MonoBehaviour[])(object)new MonoBehaviour[0];public GameObject[] exitObjects = (GameObject[])(object)new GameObject[0];public MonoBehaviour[] exitBehaviours = (MonoBehaviour[])(object)new MonoBehaviour[0];public VisualState visualState;public VisualState prevVisualState;public float radius;private Transform cachedTransform;public void Awake(){cachedTransform = ((Component)this).transform;}public void Start(){RebuildVisuals();}public void Update(){//IL_003a: Unknown result type (might be due to invalid IL or missing references)//IL_0068: Unknown result type (might be due to invalid IL or missing references)//IL_0073: Unknown result type (might be due to invalid IL or missing references)//IL_0058: Unknown result type (might be due to invalid IL or missing references)if (!Object.op_Implicit((Object)(object)healthComponent) || !healthComponent.alive){visualState = VisualState.Exit;}if (Object.op_Implicit((Object)(object)parentTransform)){cachedTransform.position = parentTransform.position;if (rotateWithParent){cachedTransform.rotation = parentTransform.rotation;}cachedTransform.localScale = Vector3.one * radius;if (visualState != prevVisualState){prevVisualState = visualState;RebuildVisuals();}}else{Object.Destroy((Object)(object)((Component)this).gameObject);}}public void RebuildVisuals(){bool flag = visualState == VisualState.Enter;GameObject[] array = enterObjects;for (int i = 0; i < array.Length; i++){array[i].SetActive(flag);}MonoBehaviour[] array2 = enterBehaviours;for (int i = 0; i < array2.Length; i++){((Behaviour)array2[i]).enabled = flag;}array = exitObjects;for (int i = 0; i < array.Length; i++){array[i].SetActive(!flag);}array2 = exitBehaviours;for (int i = 0; i < array2.Length; i++){((Behaviour)array2[i]).enabled = !flag;}}}public class MysticsRisky2UtilsCharacterCustomTempVFXHolder : MonoBehaviour{public CharacterBody characterBody;public Dictionary<GameObject, MysticsRisky2UtilsTempVFX> dictionary = new Dictionary<GameObject, MysticsRisky2UtilsTempVFX>();public static Dictionary<CharacterBody, MysticsRisky2UtilsCharacterCustomTempVFXHolder> bodyToVFXHolder = new Dictionary<CharacterBody, MysticsRisky2UtilsCharacterCustomTempVFXHolder>();public void Awake(){characterBody = ((Component)this).GetComponent<CharacterBody>();bodyToVFXHolder[characterBody] = this;foreach (VFXInfo item in allVFX){dictionary.Add(item.prefab, null);}}public void OnDestroy(){if (bodyToVFXHolder.ContainsKey(characterBody)){bodyToVFXHolder.Remove(characterBody);}}}[Serializable][CompilerGenerated]private sealed class <>c{public static readonly <>c <>9 = new <>c();public static hook_Awake <>9__4_0;public static hook_UpdateAllTemporaryVisualEffects <>9__4_1;internal void <Init>b__4_0(orig_Awake orig, CharacterBody self){orig.Invoke(self);((Component)self).gameObject.AddComponent<MysticsRisky2UtilsCharacterCustomTempVFXHolder>();}internal void <Init>b__4_1(orig_UpdateAllTemporaryVisualEffects orig, CharacterBody self){//IL_0066: Unknown result type (might be due to invalid IL or missing references)//IL_006b: Unknown result type (might be due to invalid IL or missing references)orig.Invoke(self);if (!MysticsRisky2UtilsCharacterCustomTempVFXHolder.bodyToVFXHolder.TryGetValue(self, out var value)){return;}foreach (VFXInfo item in allVFX){bool num = item.condition(self);MysticsRisky2UtilsTempVFX mysticsRisky2UtilsTempVFX = value.dictionary[item.prefab];if (num){if (!Object.op_Implicit((Object)(object)mysticsRisky2UtilsTempVFX)){GameObject obj = Object.Instantiate<GameObject>(item.prefab, self.corePosition, Quaternion.identity);mysticsRisky2UtilsTempVFX = obj.GetComponent<MysticsRisky2UtilsTempVFX>();value.dictionary[item.prefab] = mysticsRisky2UtilsTempVFX;mysticsRisky2UtilsTempVFX.parentTransform = self.coreTransform;mysticsRisky2UtilsTempVFX.visualState = MysticsRisky2UtilsTempVFX.VisualState.Enter;mysticsRisky2UtilsTempVFX.healthComponent = self.healthComponent;mysticsRisky2UtilsTempVFX.radius = item.radius(self);LocalCameraEffect component = obj.GetComponent<LocalCameraEffect>();if (Object.op_Implicit((Object)(object)component)){component.targetCharacter = ((Component)self).gameObject;}if (string.IsNullOrEmpty(item.child)){continue;}ModelLocator modelLocator = self.modelLocator;if (!Object.op_Implicit((Object)(object)modelLocator)){continue;}Transform modelTransform = modelLocator.modelTransform;if (!Object.op_Implicit((Object)(object)modelTransform)){continue;}ChildLocator component2 = ((Component)modelTransform).GetComponent<ChildLocator>();if (Object.op_Implicit((Object)(object)component2)){Transform