Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of EggsSkills v2.4.17
plugins/Eggs Skills.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EggsSkills.Config; using EggsSkills.EntityStates; using EggsSkills.EntityStates.TeslaMine.MineStates.ArmingStates; using EggsSkills.EntityStates.TeslaMine.MineStates.MainStates; using EggsSkills.ModCompats; using EggsSkills.Orbs; using EggsSkills.Properties; using EggsSkills.Resources; using EggsSkills.SkillDefs; using EggsSkills.Skills.Engi_Skills.MicroMissiles; using EggsSkills.Stats; using EggsSkills.Unlocks; using EggsUtils.Buffs; using EggsUtils.Config; using EggsUtils.Helpers; using EggsUtils.Properties; using EntityStates; using EntityStates.Bandit2.Weapon; using EntityStates.Captain.Weapon; using EntityStates.Croco; using EntityStates.Engi.Mine; using EntityStates.Treebot.Weapon; using EntityStates.VoidSurvivor; using EntityStates.VoidSurvivor.CorruptMode; using JetBrains.Annotations; using KinematicCharacterController; using On.EntityStates.Captain.Weapon; using On.EntityStates.VoidSurvivor; using On.EntityStates.VoidSurvivor.CorruptMode; using On.RoR2; using PlasmaCoreSpikestripContent.Content.Skills; using R2API; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.Stats; using SkillsPlusPlus; using SkillsPlusPlus.Modifiers; using TILER2; using ThinkInvisible.ClassicItems; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Eggs Skills")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+28c49165671803962f0d307e49ff344ffb7d395c")] [assembly: AssemblyProduct("Eggs Skills")] [assembly: AssemblyTitle("Eggs Skills")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace EggsSkills { [NetworkCompatibility(/*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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Egg.EggsSkills", "Eggs Skills", "2.4.17")] internal class EggsSkills : BaseUnityPlugin { public const string MODNAME = "com.Egg.EggsSkills"; public const string MODTITLE = "Eggs Skills"; public const string MODVERS = "2.4.17"; public const string API_NAME = "com.bepis.r2api"; public const string SKILLSPLUS_NAME = "com.cwmlolzlz.skills"; public const string AUTOSPRINT_NAME = "com.johnedwa.RTAutoSprintEx"; public const string CLASSICITEMS_NAME = "com.ThinkInvisible.ClassicItems"; public const string STANDALONESCEPTER_NAME = "com.DestroyedClone.AncientScepter"; public const string PLASMACORESPIKESTRIP_NAME = "com.plasmacore.PlasmaCoreSpikestripContent"; public static bool skillsPlusLoaded; public static bool classicItemsLoaded; public static bool standaloneScepterLoaded; public static bool plasmacoreSpikestripLoaded; private void Awake() { Log.Init(((BaseUnityPlugin)this).Logger); skillsPlusLoaded = Chainloader.PluginInfos.ContainsKey("com.cwmlolzlz.skills"); classicItemsLoaded = Chainloader.PluginInfos.ContainsKey("com.ThinkInvisible.ClassicItems"); standaloneScepterLoaded = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); plasmacoreSpikestripLoaded = Chainloader.PluginInfos.ContainsKey("com.plasmacore.PlasmaCoreSpikestripContent"); AutosprintAgonyEngage(); Configuration.LoadConfig(); SkillsAssets.LoadResources(); UnlocksRegistering.RegisterUnlockables(); if (classicItemsLoaded || standaloneScepterLoaded) { ScepterCompatibility(); } SkillsLoader.RegisterSkills(); if (classicItemsLoaded) { SkillsLoader.SetScepterReplacements(); } else if (standaloneScepterLoaded) { SkillsLoader.SetStandaloneScepterReplacements(); } if (skillsPlusLoaded) { SkillsPlusPlusCompatibility(); } Log.LogMessage("EggsSkills fully loaded!"); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void SkillsPlusPlusCompatibility() { SkillModifierManager.LoadSkillModifiers(); } private void ScepterCompatibility() { SkillsLoader.skillsToHandle = new Dictionary<string, SkillsLoader.SkillUpgradeContainer>(); } private void AutosprintAgonyEngage() { if (Chainloader.PluginInfos.ContainsKey("com.johnedwa.RTAutoSprintEx")) { ((Component)this).SendMessage("RT_SprintDisableMessage", (object)"EggsSkills.EntityStates.DirectiveRoot"); ((Component)this).SendMessage("RT_AnimationDelayMessage", (object)"EggsSkills.EntityStates.CombatShotgunEntity"); ((Component)this).SendMessage("RT_AnimationDelayMessage", (object)"EggsSkills.EntityStates.TeslaMineFireState"); } } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void LogDebug(object data) { _logSource.LogDebug(data); } internal static void LogError(object data) { _logSource.LogError(data); } internal static void LogFatal(object data) { _logSource.LogFatal(data); } internal static void LogInfo(object data) { _logSource.LogInfo(data); } internal static void LogMessage(object data) { _logSource.LogMessage(data); } internal static void LogWarning(object data) { _logSource.LogWarning(data); } } internal class SkillsLoader { internal struct SkillUpgradeContainer { internal string body; internal SkillDef normalSkillDef; internal SkillDef upgradedSkillDef; internal SkillSlot slot; internal int index; } internal static GameObject artificerRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageBody.prefab").WaitForCompletion(); internal static GameObject mercenaryRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/MercBody.prefab").WaitForCompletion(); internal static GameObject commandoRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); internal static GameObject engineerRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiBody.prefab").WaitForCompletion(); internal static GameObject rexRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/TreebotBody.prefab").WaitForCompletion(); internal static GameObject loaderRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Loader/LoaderBody.prefab").WaitForCompletion(); internal static GameObject acridRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Croco/CrocoBody.prefab").WaitForCompletion(); internal static GameObject captainRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainBody.prefab").WaitForCompletion(); internal static GameObject banditRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2Body.prefab").WaitForCompletion(); internal static GameObject multRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Toolbot/ToolbotBody.prefab").WaitForCompletion(); internal static GameObject huntressRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressBody.prefab").WaitForCompletion(); internal static GameObject railgunnerRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerBody.prefab").WaitForCompletion(); internal static GameObject voidFiendRef = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBody.prefab").WaitForCompletion(); internal static List<SkillDef> defList = new List<SkillDef>(); internal static Dictionary<string, SkillUpgradeContainer> skillsToHandle; internal static void RegisterSkills() { try { if (Configuration.GetConfigValue<bool>(Configuration.EnableMageSkills)) { RegisterArtificerSkills(); } } catch { Log.LogError("Failed to load Artificer skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableMercSkills)) { RegisterMercenarySkills(); } } catch { Log.LogError("Failed to load Mercenary skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCommandoSkills)) { RegisterCommandoSkills(); } } catch { Log.LogError("Failed to load Commando skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableEngiSkills)) { RegisterEngiSkills(); } } catch { Log.LogError("Failed to load Engineer skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCrocoSkills)) { RegisterAcridSkills(); } } catch { Log.LogError("Failed to load Acrid skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableLoaderSkills)) { RegisterLoaderSkills(); } } catch { Log.LogError("Failed to load Loader skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCaptainSkills)) { RegisterCaptainSkills(); } } catch { Log.LogError("Failed to load Captain skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableTreebotSkills)) { RegisterRexSkills(); } } catch { Log.LogError("Failed to load REX skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableBanditSkills)) { RegisterBanditSkills(); } } catch { Log.LogError("Failed to load Bandit skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableHuntressSkills)) { RegisterHuntressSkills(); } } catch { Log.LogError("Failed to laod Huntress skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableToolbotSkills)) { RegisterMultSkills(); } } catch { Log.LogError("Failed to load MUL-T skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableRailgunnerSkills)) { RegisterRailgunnerSkills(); } } catch { Log.LogError("Failed to load Railgunner skills"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableVoidfiendSkills)) { RegisterVoidfiendSkills(); } } catch { Log.LogError("Failed to load Void Fiend skills"); } try { if (EggsSkills.classicItemsLoaded) { RegisterScepterSkills(); } } catch { Log.LogError("Failed to load one or more scepter replacements"); } try { RegisterExtraStates(); } catch { Log.LogError("Failed to load one or more extra entity-states"); } if (defList.Count > 0) { foreach (SkillDef def in defList) { try { ContentAddition.AddSkillDef(def); Log.LogMessage("Skill: " + def.skillName + " Registered"); } catch { Log.LogError("Skilldef failed to be registered"); } } return; } Log.LogMessage("Did you really install my mod just to disable all the skills :("); } private static void RegisterAcridSkills() { //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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Expected O, but got Unknown //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01da: 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_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Expected O, but got Unknown //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = acridRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; SkillFamily skillFamily2 = component.primary.skillFamily; AcridPurgeDef acridPurgeDef = ScriptableObject.CreateInstance<AcridPurgeDef>(); ((SkillDef)acridPurgeDef).activationState = new SerializableEntityStateType(typeof(AcridPurgeEntity)); ((SkillDef)acridPurgeDef).activationStateMachineName = "Body"; ((SkillDef)acridPurgeDef).baseMaxStock = 1; ((SkillDef)acridPurgeDef).baseRechargeInterval = 16f; ((SkillDef)acridPurgeDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)acridPurgeDef).fullRestockOnAssign = false; ((SkillDef)acridPurgeDef).interruptPriority = (InterruptPriority)1; ((SkillDef)acridPurgeDef).isCombatSkill = true; ((SkillDef)acridPurgeDef).mustKeyPress = true; ((SkillDef)acridPurgeDef).canceledFromSprinting = false; ((SkillDef)acridPurgeDef).cancelSprintingOnActivation = false; ((SkillDef)acridPurgeDef).forceSprintDuringState = false; ((SkillDef)acridPurgeDef).rechargeStock = 1; ((SkillDef)acridPurgeDef).requiredStock = 1; ((SkillDef)acridPurgeDef).stockToConsume = 1; ((SkillDef)acridPurgeDef).icon = Sprites.acridpurgeIconS; ((SkillDef)acridPurgeDef).skillDescriptionToken = "ES_CROCO_SPECIAL_PURGE_DESCRIPTION"; string skillName = (((Object)acridPurgeDef).name = "ESPurge"); ((SkillDef)acridPurgeDef).skillName = skillName; ((SkillDef)acridPurgeDef).skillNameToken = "ES_CROCO_SPECIAL_PURGE_NAME"; defList.Add((SkillDef)(object)acridPurgeDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(object)acridPurgeDef, unlockableDef = UnlocksRegistering.acridPurgeUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)acridPurgeDef).skillNameToken, false, (Node)null); variants[num] = val; bool flag = default(bool); ContentAddition.AddEntityState<AcridPurgeEntityUpgrade>(ref flag); if (EggsSkills.classicItemsLoaded) { skillsToHandle.Add(((SkillDef)acridPurgeDef).skillName, new SkillUpgradeContainer { normalSkillDef = (SkillDef)(object)acridPurgeDef, body = "Croco", slot = (SkillSlot)3, index = skillFamily.variants.Length - 1 }); } SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(PoisonBreath)); val2.activationStateMachineName = "Weapon"; val2.beginSkillCooldownOnSkillEnd = true; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.mustKeyPress = false; val2.canceledFromSprinting = false; val2.cancelSprintingOnActivation = true; val2.forceSprintDuringState = false; val2.stockToConsume = 0; val2.icon = Sprites.acridpoisonbreathIconS; val2.skillDescriptionToken = "ES_CROCO_PRIMARY_POISONBREATH_DESCRIPTION"; skillName = (((Object)val2).name = "ESPoisonBreath"); val2.skillName = skillName; val2.skillNameToken = "ES_CROCO_PRIMARY_POISONBREATH_NAME"; val2.keywordTokens = new string[1] { "KEYWORD_POISON" }; defList.Add(val2); Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants2 = skillFamily2.variants; int num2 = skillFamily2.variants.Length - 1; val = new Variant { skillDef = val2, unlockableDef = UnlocksRegistering.acridPoisonbreathUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants2[num2] = val; ContentAddition.AddEntityState<PoisonBreath>(ref flag); } private static void RegisterArtificerSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Expected O, but got Unknown //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = artificerRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.utility.skillFamily; SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(ZapportChargeEntity)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 2; val.baseRechargeInterval = 10f; val.beginSkillCooldownOnSkillEnd = true; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)2; val.isCombatSkill = true; val.mustKeyPress = false; val.canceledFromSprinting = false; val.cancelSprintingOnActivation = true; val.forceSprintDuringState = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Sprites.zapportIconS; val.skillDescriptionToken = "ES_MAGE_UTILITY_ZAPPORT_DESCRIPTION"; string skillName = (((Object)val).name = "ESZapport"); val.skillName = skillName; val.skillNameToken = "ES_MAGE_UTILITY_ZAPPORT_NAME"; val.keywordTokens = new string[2] { "KEYWORD_STUNNING", "ES_KEYWORD_ENHANCING" }; defList.Add(val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = val, unlockableDef = UnlocksRegistering.artificerZapportUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<ZapportChargeEntity>(ref flag); } private static void RegisterBanditSkills() { //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_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0143: 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_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Expected O, but got Unknown //IL_0274: 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_027d: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = banditRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.utility.skillFamily; SkillFamily skillFamily2 = component.primary.skillFamily; InvisOnSprintSkillDef invisOnSprintSkillDef = ScriptableObject.CreateInstance<InvisOnSprintSkillDef>(); ((SkillDef)invisOnSprintSkillDef).activationState = new SerializableEntityStateType(typeof(InvisDummyState)); ((SkillDef)invisOnSprintSkillDef).activationStateMachineName = "Body"; ((SkillDef)invisOnSprintSkillDef).baseMaxStock = 1; ((SkillDef)invisOnSprintSkillDef).baseRechargeInterval = 6f; ((SkillDef)invisOnSprintSkillDef).fullRestockOnAssign = false; ((SkillDef)invisOnSprintSkillDef).rechargeStock = 1; ((SkillDef)invisOnSprintSkillDef).requiredStock = 1; ((SkillDef)invisOnSprintSkillDef).stockToConsume = 1; ((SkillDef)invisOnSprintSkillDef).icon = Sprites.invisSprintIconS; ((SkillDef)invisOnSprintSkillDef).skillDescriptionToken = "ES_BANDIT2_UTILITY_INVISSPRINT_DESCRIPTION"; string skillName = (((Object)invisOnSprintSkillDef).name = "ESInvisSprint"); ((SkillDef)invisOnSprintSkillDef).skillName = skillName; ((SkillDef)invisOnSprintSkillDef).skillNameToken = "ES_BANDIT2_UTILITY_INVISSPRINT_NAME"; defList.Add((SkillDef)(object)invisOnSprintSkillDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(object)invisOnSprintSkillDef, unlockableDef = UnlocksRegistering.banditInvisSprintUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)invisOnSprintSkillDef).skillNameToken, false, (Node)null); variants[num] = val; ReloadSkillDef val2 = ScriptableObject.CreateInstance<ReloadSkillDef>(); ((SkillDef)val2).activationState = new SerializableEntityStateType(typeof(MagicBulletEntity)); val2.reloadState = new SerializableEntityStateType(typeof(EnterReload)); ((SkillDef)val2).activationStateMachineName = "Weapon"; ((SkillDef)val2).baseMaxStock = 4; val2.graceDuration = 0.8f; ((SkillDef)val2).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val2).fullRestockOnAssign = false; ((SkillDef)val2).isCombatSkill = true; ((SkillDef)val2).mustKeyPress = true; val2.reloadInterruptPriority = (InterruptPriority)0; ((SkillDef)val2).canceledFromSprinting = true; ((SkillDef)val2).cancelSprintingOnActivation = true; ((SkillDef)val2).forceSprintDuringState = false; ((SkillDef)val2).baseRechargeInterval = 0f; ((SkillDef)val2).rechargeStock = 0; ((SkillDef)val2).requiredStock = 1; ((SkillDef)val2).stockToConsume = 1; ((SkillDef)val2).icon = Sprites.magicBulletIconS; ((SkillDef)val2).skillDescriptionToken = "ES_BANDIT2_PRIMARY_MAGICBULLET_DESCRIPTION"; skillName = (((Object)val2).name = "ESMagicBullet"); ((SkillDef)val2).skillName = skillName; ((SkillDef)val2).skillNameToken = "ES_BANDIT2_PRIMARY_MAGICBULLET_NAME"; defList.Add((SkillDef)(object)val2); Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants2 = skillFamily2.variants; int num2 = skillFamily2.variants.Length - 1; val = new Variant { skillDef = (SkillDef)(object)val2, unlockableDef = UnlocksRegistering.banditMagicBulletUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)val2).skillNameToken, false, (Node)null); variants2[num2] = val; bool flag = default(bool); ContentAddition.AddEntityState<MagicBulletEntity>(ref flag); } private static void RegisterCaptainSkills() { //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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Expected O, but got Unknown //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0161: 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_017f: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Expected O, but got Unknown //IL_0273: 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_027c: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = captainRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.secondary.skillFamily; SkillFamily skillFamily2 = component.primary.skillFamily; SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(DebuffGrenadeEntity)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 1; val.baseRechargeInterval = 10f; val.beginSkillCooldownOnSkillEnd = true; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)1; val.isCombatSkill = true; val.mustKeyPress = false; val.canceledFromSprinting = false; val.cancelSprintingOnActivation = true; val.forceSprintDuringState = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Sprites.debuffNadeIconS; val.skillDescriptionToken = "ES_CAPTAIN_SECONDARY_DEBUFFNADE_DESCRIPTION"; string skillName = (((Object)val).name = "ESDebuffNade"); val.skillName = skillName; val.skillNameToken = "ES_CAPTAIN_SECONDARY_DEBUFFNADE_NAME"; val.keywordTokens = new string[1] { "ES_KEYWORD_MARKING" }; defList.Add(val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = val, unlockableDef = UnlocksRegistering.captainDebuffnadeUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<DebuffGrenadeEntity>(ref flag); CaptainAutoshotgunSkilldef captainAutoshotgunSkilldef = ScriptableObject.CreateInstance<CaptainAutoshotgunSkilldef>(); ((SkillDef)captainAutoshotgunSkilldef).activationState = new SerializableEntityStateType(typeof(CaptainAutoShotgunEntity)); ((SkillDef)captainAutoshotgunSkilldef).activationStateMachineName = "Weapon"; ((SkillDef)captainAutoshotgunSkilldef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)captainAutoshotgunSkilldef).interruptPriority = (InterruptPriority)0; ((SkillDef)captainAutoshotgunSkilldef).isCombatSkill = true; ((SkillDef)captainAutoshotgunSkilldef).mustKeyPress = false; ((SkillDef)captainAutoshotgunSkilldef).canceledFromSprinting = false; ((SkillDef)captainAutoshotgunSkilldef).cancelSprintingOnActivation = true; ((SkillDef)captainAutoshotgunSkilldef).forceSprintDuringState = false; ((SkillDef)captainAutoshotgunSkilldef).stockToConsume = 0; ((SkillDef)captainAutoshotgunSkilldef).icon = Sprites.autoshotgunIconS; ((SkillDef)captainAutoshotgunSkilldef).skillDescriptionToken = "ES_CAPTAIN_PRIMARY_AUTOSHOTGUN_DESCRIPTION"; skillName = (((Object)captainAutoshotgunSkilldef).name = "ESAutoShotgun"); ((SkillDef)captainAutoshotgunSkilldef).skillName = skillName; ((SkillDef)captainAutoshotgunSkilldef).skillNameToken = "ES_CAPTAIN_PRIMARY_AUTOSHOTGUN_NAME"; defList.Add((SkillDef)(object)captainAutoshotgunSkilldef); Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants2 = skillFamily2.variants; int num2 = skillFamily2.variants.Length - 1; val2 = new Variant { skillDef = (SkillDef)(object)captainAutoshotgunSkilldef, unlockableDef = UnlocksRegistering.captainAutoshotgunUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)captainAutoshotgunSkilldef).skillNameToken, false, (Node)null); variants2[num2] = val2; ContentAddition.AddEntityState<CombatShotgunEntity>(ref flag); } private static void RegisterCommandoSkills() { //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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Expected O, but got Unknown //IL_0124: 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) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = commandoRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.primary.skillFamily; SkillFamily skillFamily2 = component.utility.skillFamily; SteppedSkillDef val = ScriptableObject.CreateInstance<SteppedSkillDef>(); ((SkillDef)val).activationState = new SerializableEntityStateType(typeof(CombatShotgunEntity)); ((SkillDef)val).activationStateMachineName = "Weapon"; ((SkillDef)val).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val).fullRestockOnAssign = true; ((SkillDef)val).interruptPriority = (InterruptPriority)0; ((SkillDef)val).isCombatSkill = true; ((SkillDef)val).mustKeyPress = false; ((SkillDef)val).canceledFromSprinting = false; ((SkillDef)val).cancelSprintingOnActivation = true; ((SkillDef)val).forceSprintDuringState = false; ((SkillDef)val).stockToConsume = 0; ((SkillDef)val).icon = Sprites.shotgunIconS; ((SkillDef)val).skillDescriptionToken = "ES_COMMANDO_PRIMARY_COMBATSHOTGUN_DESCRIPTION"; string skillName = (((Object)val).name = "ESCombatShotgun"); ((SkillDef)val).skillName = skillName; ((SkillDef)val).skillNameToken = "ES_COMMANDO_PRIMARY_COMBATSHOTGUN_NAME"; defList.Add((SkillDef)(object)val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = (SkillDef)(object)val, unlockableDef = UnlocksRegistering.commandoShotgunUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<CombatShotgunEntity>(ref flag); SkillDef val3 = ScriptableObject.CreateInstance<SkillDef>(); val3.activationState = new SerializableEntityStateType(typeof(CommandoDashEntity)); val3.activationStateMachineName = "Body"; val3.baseMaxStock = 2; val3.baseRechargeInterval = 10f; val3.beginSkillCooldownOnSkillEnd = true; val3.fullRestockOnAssign = false; val3.interruptPriority = (InterruptPriority)2; val3.isCombatSkill = false; val3.mustKeyPress = true; val3.canceledFromSprinting = false; val3.cancelSprintingOnActivation = false; val3.forceSprintDuringState = true; val3.stockToConsume = 1; val3.requiredStock = 1; val3.rechargeStock = 1; val3.icon = Sprites.dashIconS; val3.skillDescriptionToken = "ES_COMMANDO_UTILITY_DASH_DESCRIPTION"; skillName = (((Object)val3).name = "ESDash"); val3.skillName = skillName; val3.skillNameToken = "ES_COMMANDO_UTILITY_DASH_NAME"; val3.keywordTokens = new string[1] { "ES_KEYWORD_PREPARE" }; defList.Add(val3); Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants2 = skillFamily2.variants; int num2 = skillFamily2.variants.Length - 1; val2 = new Variant { skillDef = val3, unlockableDef = UnlocksRegistering.commandoDashUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(val3.skillNameToken, false, (Node)null); variants2[num2] = val2; ContentAddition.AddEntityState<CommandoDashEntity>(ref flag); } private static void RegisterEngiSkills() { //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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0240: 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_0270: Expected O, but got Unknown //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = engineerRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.secondary.skillFamily; SkillFamily skillFamily2 = component.primary.skillFamily; SkillDef val = (SkillDef)(object)ScriptableObject.CreateInstance<SteppedSkillDef>(); val.activationState = new SerializableEntityStateType(typeof(MicroMissileEntity)); val.activationStateMachineName = "Weapon"; val.beginSkillCooldownOnSkillEnd = true; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = false; val.canceledFromSprinting = false; val.cancelSprintingOnActivation = true; val.forceSprintDuringState = false; val.stockToConsume = 0; val.icon = Sprites.micromissileIconS; val.skillDescriptionToken = "ES_ENGI_PRIMARY_MICROMISSILES_DESCRIPTION"; string skillName = (((Object)val).name = "EsMicroMissiles"); val.skillName = skillName; val.skillNameToken = "ES_ENGI_PRIMARY_MICROMISSILES_NAME"; defList.Add(val); Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants = skillFamily2.variants; int num = skillFamily2.variants.Length - 1; Variant val2 = new Variant { skillDef = val, unlockableDef = UnlocksRegistering.engiMicromissileUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[num] = val2; SkillDef val3 = ScriptableObject.CreateInstance<SkillDef>(); val3.activationState = new SerializableEntityStateType(typeof(TeslaMineFireState)); val3.activationStateMachineName = "Weapon"; val3.baseMaxStock = 4; val3.baseRechargeInterval = 8f; val3.beginSkillCooldownOnSkillEnd = false; val3.fullRestockOnAssign = false; val3.interruptPriority = (InterruptPriority)1; val3.isCombatSkill = true; val3.mustKeyPress = false; val3.canceledFromSprinting = false; val3.cancelSprintingOnActivation = true; val3.forceSprintDuringState = false; val3.rechargeStock = 1; val3.requiredStock = 1; val3.stockToConsume = 1; val3.icon = Sprites.teslaMineIconS; val3.skillDescriptionToken = "ES_ENGI_SECONDARY_TESLAMINE_DESCRIPTION"; skillName = (((Object)val3).name = "ESTeslaMine"); val3.skillName = skillName; val3.skillNameToken = "ES_ENGI_SECONDARY_TESLAMINE_NAME"; val3.keywordTokens = new string[1] { "KEYWORD_STUNNING" }; defList.Add(val3); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants2 = skillFamily.variants; int num2 = skillFamily.variants.Length - 1; val2 = new Variant { skillDef = val3, unlockableDef = UnlocksRegistering.engiTeslaUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(val3.skillNameToken, false, (Node)null); variants2[num2] = val2; bool flag = default(bool); ContentAddition.AddEntityState<TeslaMineFireState>(ref flag); } private static void RegisterHuntressSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Expected O, but got Unknown //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = huntressRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.secondary.skillFamily; HuntressTrackingSkillDef val = ScriptableObject.CreateInstance<HuntressTrackingSkillDef>(); ((SkillDef)val).activationState = new SerializableEntityStateType(typeof(ClusterBombArrow)); ((SkillDef)val).activationStateMachineName = "Weapon"; ((SkillDef)val).baseMaxStock = 1; ((SkillDef)val).baseRechargeInterval = 8f; ((SkillDef)val).beginSkillCooldownOnSkillEnd = false; ((SkillDef)val).fullRestockOnAssign = false; ((SkillDef)val).interruptPriority = (InterruptPriority)1; ((SkillDef)val).isCombatSkill = true; ((SkillDef)val).mustKeyPress = false; ((SkillDef)val).canceledFromSprinting = false; ((SkillDef)val).cancelSprintingOnActivation = false; ((SkillDef)val).forceSprintDuringState = false; ((SkillDef)val).rechargeStock = 1; ((SkillDef)val).requiredStock = 1; ((SkillDef)val).stockToConsume = 1; ((SkillDef)val).icon = Sprites.clusterarrowIconS; ((SkillDef)val).skillDescriptionToken = "ES_HUNTRESS_SECONDARY_CLUSTERARROW_DESCRIPTION"; string skillName = (((Object)val).name = "ESClusterArrow"); ((SkillDef)val).skillName = skillName; ((SkillDef)val).skillNameToken = "ES_HUNTRESS_SECONDARY_CLUSTERARROW_NAME"; ((SkillDef)val).keywordTokens = new string[1] { "KEYWORD_AGILE" }; defList.Add((SkillDef)(object)val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = (SkillDef)(object)val, unlockableDef = UnlocksRegistering.huntressClusterarrowUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<ClusterBombArrow>(ref flag); } private static void RegisterLoaderSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = loaderRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; ShieldsplosionDef shieldsplosionDef = ScriptableObject.CreateInstance<ShieldsplosionDef>(); ((SkillDef)shieldsplosionDef).activationState = new SerializableEntityStateType(typeof(ShieldSplosionEntity)); ((SkillDef)shieldsplosionDef).activationStateMachineName = "Body"; ((SkillDef)shieldsplosionDef).baseMaxStock = 1; ((SkillDef)shieldsplosionDef).baseRechargeInterval = 8f; ((SkillDef)shieldsplosionDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)shieldsplosionDef).fullRestockOnAssign = false; ((SkillDef)shieldsplosionDef).interruptPriority = (InterruptPriority)1; ((SkillDef)shieldsplosionDef).isCombatSkill = true; ((SkillDef)shieldsplosionDef).mustKeyPress = true; ((SkillDef)shieldsplosionDef).canceledFromSprinting = false; ((SkillDef)shieldsplosionDef).cancelSprintingOnActivation = false; ((SkillDef)shieldsplosionDef).forceSprintDuringState = false; ((SkillDef)shieldsplosionDef).rechargeStock = 1; ((SkillDef)shieldsplosionDef).requiredStock = 1; ((SkillDef)shieldsplosionDef).stockToConsume = 1; ((SkillDef)shieldsplosionDef).icon = Sprites.shieldsplosionIconS; ((SkillDef)shieldsplosionDef).skillDescriptionToken = "ES_LOADER_SPECIAL_SHIELDSPLOSION_DESCRIPTION"; string skillName = (((Object)shieldsplosionDef).name = "ESShieldSplosion"); ((SkillDef)shieldsplosionDef).skillName = skillName; ((SkillDef)shieldsplosionDef).skillNameToken = "ES_LOADER_SPECIAL_SHIELDSPLOSION_NAME"; defList.Add((SkillDef)(object)shieldsplosionDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(object)shieldsplosionDef, unlockableDef = UnlocksRegistering.loaderShieldsplosionUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)shieldsplosionDef).skillNameToken, false, (Node)null); variants[num] = val; bool flag = default(bool); ContentAddition.AddEntityState<ShieldSplosionEntity>(ref flag); } private static void RegisterMercenarySkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0163: 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) SkillLocator component = mercenaryRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; MercSlashportDef mercSlashportDef = ScriptableObject.CreateInstance<MercSlashportDef>(); ((SkillDef)mercSlashportDef).activationState = new SerializableEntityStateType(typeof(SlashportEntity)); ((SkillDef)mercSlashportDef).activationStateMachineName = "Weapon"; ((SkillDef)mercSlashportDef).baseMaxStock = 1; ((SkillDef)mercSlashportDef).baseRechargeInterval = 8f; ((SkillDef)mercSlashportDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)mercSlashportDef).fullRestockOnAssign = false; ((SkillDef)mercSlashportDef).interruptPriority = (InterruptPriority)2; ((SkillDef)mercSlashportDef).isCombatSkill = true; ((SkillDef)mercSlashportDef).mustKeyPress = false; ((SkillDef)mercSlashportDef).canceledFromSprinting = false; ((SkillDef)mercSlashportDef).cancelSprintingOnActivation = false; ((SkillDef)mercSlashportDef).forceSprintDuringState = false; ((SkillDef)mercSlashportDef).rechargeStock = 1; ((SkillDef)mercSlashportDef).requiredStock = 1; ((SkillDef)mercSlashportDef).stockToConsume = 1; ((SkillDef)mercSlashportDef).icon = Sprites.slashportIconS; ((SkillDef)mercSlashportDef).skillDescriptionToken = "ES_MERC_SPECIAL_SLASHPORT_DESCRIPTION"; string skillName = (((Object)mercSlashportDef).name = "ESSlashport"); ((SkillDef)mercSlashportDef).skillName = skillName; ((SkillDef)mercSlashportDef).skillNameToken = "ES_MERC_SPECIAL_SLASHPORT_NAME"; ((SkillDef)mercSlashportDef).keywordTokens = new string[3] { "KEYWORD_EXPOSE", "KEYWORD_STUNNING", "KEYWORD_SLAYER" }; defList.Add((SkillDef)(object)mercSlashportDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(object)mercSlashportDef, unlockableDef = UnlocksRegistering.mercSlashportUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)mercSlashportDef).skillNameToken, false, (Node)null); variants[num] = val; bool flag = default(bool); ContentAddition.AddEntityState<SlashportEntity>(ref flag); if (EggsSkills.classicItemsLoaded) { skillsToHandle.Add(((SkillDef)mercSlashportDef).skillName, new SkillUpgradeContainer { normalSkillDef = (SkillDef)(object)mercSlashportDef, body = "Merc", slot = (SkillSlot)3, index = skillFamily.variants.Length - 1 }); } } private static void RegisterMultSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Expected O, but got Unknown //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = multRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.secondary.skillFamily; NanoSkilldef nanoSkilldef = ScriptableObject.CreateInstance<NanoSkilldef>(); ((SkillDef)nanoSkilldef).activationState = new SerializableEntityStateType(typeof(NanobotEntity)); ((SkillDef)nanoSkilldef).activationStateMachineName = "Weapon"; ((SkillDef)nanoSkilldef).baseMaxStock = 1; ((SkillDef)nanoSkilldef).baseRechargeInterval = 12f; ((SkillDef)nanoSkilldef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)nanoSkilldef).fullRestockOnAssign = false; ((SkillDef)nanoSkilldef).interruptPriority = (InterruptPriority)1; ((SkillDef)nanoSkilldef).isCombatSkill = true; ((SkillDef)nanoSkilldef).mustKeyPress = true; ((SkillDef)nanoSkilldef).canceledFromSprinting = false; ((SkillDef)nanoSkilldef).cancelSprintingOnActivation = true; ((SkillDef)nanoSkilldef).forceSprintDuringState = false; ((SkillDef)nanoSkilldef).rechargeStock = 1; ((SkillDef)nanoSkilldef).requiredStock = 1; ((SkillDef)nanoSkilldef).stockToConsume = 1; ((SkillDef)nanoSkilldef).icon = Sprites.nanoBotsIconS; ((SkillDef)nanoSkilldef).skillDescriptionToken = "ES_TOOLBOT_SECONDARY_NANOBOTS_DESCRIPTION"; string skillName = (((Object)nanoSkilldef).name = "ESNanobots"); ((SkillDef)nanoSkilldef).skillName = skillName; ((SkillDef)nanoSkilldef).skillNameToken = "ES_TOOLBOT_SECONDARY_NANOBOTS_NAME"; ((SkillDef)nanoSkilldef).keywordTokens = new string[1] { "ES_KEYWORD_MARKING" }; defList.Add((SkillDef)(object)nanoSkilldef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(object)nanoSkilldef, unlockableDef = UnlocksRegistering.multNanobeaconUnlockDef }; ((Variant)(ref val)).viewableNode = new Node(((SkillDef)nanoSkilldef).skillNameToken, false, (Node)null); variants[num] = val; bool flag = default(bool); ContentAddition.AddEntityState<NanobotEntity>(ref flag); } private static void RegisterRailgunnerSkills() { //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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = railgunnerRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.primary.skillFamily; RailgunSkillDef val = ScriptableObject.CreateInstance<RailgunSkillDef>(); ((SkillDef)val).activationState = new SerializableEntityStateType(typeof(LancerRoundsEntity)); ((SkillDef)val).activationStateMachineName = "Weapon"; ((SkillDef)val).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val).fullRestockOnAssign = true; ((SkillDef)val).interruptPriority = (InterruptPriority)0; ((SkillDef)val).isCombatSkill = true; ((SkillDef)val).mustKeyPress = false; ((SkillDef)val).canceledFromSprinting = false; ((SkillDef)val).forceSprintDuringState = false; ((SkillDef)val).stockToConsume = 0; ((SkillDef)val).icon = Sprites.lanceroundsIconS; ((SkillDef)val).skillDescriptionToken = "ES_RAILGUNNER_PRIMARY_LANCEROUNDS_DESCRIPTION"; string skillName = (((Object)val).name = "ESLanceRounds"); ((SkillDef)val).skillName = skillName; ((SkillDef)val).skillNameToken = "ES_RAILGUNNER_PRIMARY_LANCEROUNDS_NAME"; defList.Add((SkillDef)(object)val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = (SkillDef)(object)val, unlockableDef = UnlocksRegistering.railgunnerLanceroundsUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<LancerRoundsEntity>(ref flag); } private static void RegisterRexSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Expected O, but got Unknown //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = rexRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; GroundedSkillDef val = ScriptableObject.CreateInstance<GroundedSkillDef>(); ((SkillDef)val).activationState = new SerializableEntityStateType(typeof(DirectiveRoot)); ((SkillDef)val).activationStateMachineName = "Weapon"; ((SkillDef)val).baseMaxStock = 1; ((SkillDef)val).baseRechargeInterval = 12f; ((SkillDef)val).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val).fullRestockOnAssign = false; ((SkillDef)val).interruptPriority = (InterruptPriority)1; ((SkillDef)val).isCombatSkill = true; ((SkillDef)val).mustKeyPress = true; ((SkillDef)val).canceledFromSprinting = true; ((SkillDef)val).cancelSprintingOnActivation = true; ((SkillDef)val).forceSprintDuringState = false; ((SkillDef)val).rechargeStock = 1; ((SkillDef)val).requiredStock = 1; ((SkillDef)val).stockToConsume = 1; ((SkillDef)val).icon = Sprites.rexrootIconS; ((SkillDef)val).skillDescriptionToken = "ES_TREEBOT_SPECIAL_ROOT_DESCRIPTION"; string skillName = (((Object)val).name = "ESRoot"); ((SkillDef)val).skillName = skillName; ((SkillDef)val).skillNameToken = "ES_TREEBOT_SPECIAL_ROOT_NAME"; ((SkillDef)val).keywordTokens = new string[2] { "KEYWORD_STUNNING", "ES_KEYWORD_ADAPTIVE" }; defList.Add((SkillDef)(object)val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = (SkillDef)(object)val, unlockableDef = UnlocksRegistering.rexRootUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)val).skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<DirectiveRoot>(ref flag); if (EggsSkills.classicItemsLoaded) { skillsToHandle.Add(((SkillDef)val).skillName, new SkillUpgradeContainer { normalSkillDef = (SkillDef)(object)val, body = "Treebot", slot = (SkillSlot)3, index = skillFamily.variants.Length - 1 }); } } private static void RegisterVoidfiendSkills() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Expected O, but got Unknown //IL_021c: 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_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = voidFiendRef.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; VoidsurvivorSkilldefFix voidsurvivorSkilldefFix = ScriptableObject.CreateInstance<VoidsurvivorSkilldefFix>(); ((SkillDef)voidsurvivorSkilldefFix).activationState = new SerializableEntityStateType(typeof(InversionChargePure)); ((SkillDef)voidsurvivorSkilldefFix).activationStateMachineName = "Weapon"; ((SkillDef)voidsurvivorSkilldefFix).baseMaxStock = 1; ((SkillDef)voidsurvivorSkilldefFix).baseRechargeInterval = 4f; ((SkillDef)voidsurvivorSkilldefFix).beginSkillCooldownOnSkillEnd = true; ((SkillDef)voidsurvivorSkilldefFix).fullRestockOnAssign = true; ((SkillDef)voidsurvivorSkilldefFix).interruptPriority = (InterruptPriority)1; ((SkillDef)voidsurvivorSkilldefFix).isCombatSkill = true; ((SkillDef)voidsurvivorSkilldefFix).mustKeyPress = true; ((SkillDef)voidsurvivorSkilldefFix).canceledFromSprinting = false; ((SkillDef)voidsurvivorSkilldefFix).cancelSprintingOnActivation = true; ((SkillDef)voidsurvivorSkilldefFix).forceSprintDuringState = false; ((SkillDef)voidsurvivorSkilldefFix).rechargeStock = 1; ((SkillDef)voidsurvivorSkilldefFix).requiredStock = 1; ((SkillDef)voidsurvivorSkilldefFix).stockToConsume = 1; ((SkillDef)voidsurvivorSkilldefFix).icon = Sprites.inversionIconS; ((SkillDef)voidsurvivorSkilldefFix).skillDescriptionToken = "ES_VOIDSURVIVOR_SPECIAL_INVERSION_DESCRIPTION"; string skillName = (((Object)voidsurvivorSkilldefFix).name = "ESInversion"); ((SkillDef)voidsurvivorSkilldefFix).skillName = skillName; ((SkillDef)voidsurvivorSkilldefFix).skillNameToken = "ES_VOIDSURVIVOR_SPECIAL_INVERSION_NAME"; ((SkillDef)voidsurvivorSkilldefFix).keywordTokens = new string[1] { "ES_VOIDSURVIVOR_SPECIAL_INVERSION_KEYWORD" }; SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(InversionChargeCorrupt)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 1; val.baseRechargeInterval = 4f; val.beginSkillCooldownOnSkillEnd = true; val.fullRestockOnAssign = true; val.interruptPriority = (InterruptPriority)1; val.isCombatSkill = true; val.mustKeyPress = true; val.canceledFromSprinting = false; val.cancelSprintingOnActivation = true; val.forceSprintDuringState = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Sprites.inversionAltIconS; val.skillDescriptionToken = "ES_VOIDSURVIVOR_SPECIAL_INVERSION_DESCRIPTION_ALT"; skillName = (((Object)val).name = "ESInversionAlt"); val.skillName = skillName; val.skillNameToken = "ES_VOIDSURVIVOR_SPECIAL_INVERSION_NAME_ALT"; voidsurvivorSkilldefFix.alt = val; defList.Add((SkillDef)(object)voidsurvivorSkilldefFix); defList.Add(val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = (SkillDef)(object)voidsurvivorSkilldefFix, unlockableDef = UnlocksRegistering.voidsurvivorInversionUnlockDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)voidsurvivorSkilldefFix).skillNameToken, false, (Node)null); variants[num] = val2; bool flag = default(bool); ContentAddition.AddEntityState<InversionBase>(ref flag); ContentAddition.AddEntityState<InversionPure>(ref flag); ContentAddition.AddEntityState<InversionCorrupt>(ref flag); ContentAddition.AddEntityState<InversionChargeBase>(ref flag); ContentAddition.AddEntityState<InversionChargePure>(ref flag); ContentAddition.AddEntityState<InversionChargeCorrupt>(ref flag); if (EggsSkills.classicItemsLoaded) { skillsToHandle.Add(((SkillDef)voidsurvivorSkilldefFix).skillName, new SkillUpgradeContainer { normalSkillDef = (SkillDef)(object)voidsurvivorSkilldefFix, body = "VoidSurvivor", slot = (SkillSlot)3, index = skillFamily.variants.Length - 1 }); } } private static void RegisterExtraStates() { //IL_0012: 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_003d: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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) //IL_006d: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); if (Configuration.GetConfigValue<bool>(Configuration.EnableMageSkills)) { ContentAddition.AddEntityState<ZapportFireEntity>(ref flag); Log.LogMessage("Zapport fire state loaded!"); } if (Configuration.GetConfigValue<bool>(Configuration.EnableEngiSkills)) { ContentAddition.AddEntityState<TeslaArmingUnarmedState>(ref flag); ContentAddition.AddEntityState<TeslaArmingWeakState>(ref flag); ContentAddition.AddEntityState<TeslaArmingFullState>(ref flag); ContentAddition.AddEntityState<TeslaArmState>(ref flag); ContentAddition.AddEntityState<TeslaWaitForStick>(ref flag); ContentAddition.AddEntityState<TeslaWaitForTargetState>(ref flag); ContentAddition.AddEntityState<TeslaPreDetState>(ref flag); ContentAddition.AddEntityState<TeslaDetonateState>(ref flag); Log.LogMessage("Tesla mine states loaded!"); } } private static void RegisterScepterSkills() { //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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) AcridPurgeDef acridPurgeDef = ScriptableObject.CreateInstance<AcridPurgeDef>(); ((SkillDef)acridPurgeDef).activationState = new SerializableEntityStateType(typeof(AcridPurgeEntityUpgrade)); ((SkillDef)acridPurgeDef).activationStateMachineName = "Body"; ((SkillDef)acridPurgeDef).baseMaxStock = 1; ((SkillDef)acridPurgeDef).baseRechargeInterval = 12f; ((SkillDef)acridPurgeDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)acridPurgeDef).fullRestockOnAssign = false; ((SkillDef)acridPurgeDef).interruptPriority = (InterruptPriority)1; ((SkillDef)acridPurgeDef).isCombatSkill = true; ((SkillDef)acridPurgeDef).mustKeyPress = true; ((SkillDef)acridPurgeDef).canceledFromSprinting = false; ((SkillDef)acridPurgeDef).cancelSprintingOnActivation = false; ((SkillDef)acridPurgeDef).forceSprintDuringState = false; ((SkillDef)acridPurgeDef).rechargeStock = 1; ((SkillDef)acridPurgeDef).requiredStock = 1; ((SkillDef)acridPurgeDef).stockToConsume = 1; ((SkillDef)acridPurgeDef).icon = Sprites.acridpurgeUpgradedIconS; ((SkillDef)acridPurgeDef).skillDescriptionToken = "ES_CROCO_SPECIAL_PURGE_UGPRADED_DESCRIPTION"; string skillName = (((Object)acridPurgeDef).name = "ESPurge_UG"); ((SkillDef)acridPurgeDef).skillName = skillName; ((SkillDef)acridPurgeDef).skillNameToken = "ES_CROCO_SPECIAL_PURGE_UGPRADED_NAME"; defList.Add((SkillDef)(object)acridPurgeDef); SkillUpgradeContainer value = skillsToHandle["ESPurge"]; value.upgradedSkillDef = (SkillDef)(object)acridPurgeDef; skillsToHandle["ESPurge"] = value; bool flag = default(bool); ContentAddition.AddEntityState<AcridPurgeEntityUpgrade>(ref flag); MercSlashportDef mercSlashportDef = ScriptableObject.CreateInstance<MercSlashportDef>(); ((SkillDef)mercSlashportDef).activationState = new SerializableEntityStateType(typeof(SlashportEntityUpgrade)); ((SkillDef)mercSlashportDef).activationStateMachineName = "Weapon"; ((SkillDef)mercSlashportDef).baseMaxStock = 1; ((SkillDef)mercSlashportDef).baseRechargeInterval = 8f; ((SkillDef)mercSlashportDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)mercSlashportDef).fullRestockOnAssign = false; ((SkillDef)mercSlashportDef).interruptPriority = (InterruptPriority)2; ((SkillDef)mercSlashportDef).isCombatSkill = true; ((SkillDef)mercSlashportDef).mustKeyPress = false; ((SkillDef)mercSlashportDef).canceledFromSprinting = false; ((SkillDef)mercSlashportDef).cancelSprintingOnActivation = false; ((SkillDef)mercSlashportDef).forceSprintDuringState = false; ((SkillDef)mercSlashportDef).rechargeStock = 1; ((SkillDef)mercSlashportDef).requiredStock = 1; ((SkillDef)mercSlashportDef).stockToConsume = 1; ((SkillDef)mercSlashportDef).icon = Sprites.slashportUpgradedIconS; ((SkillDef)mercSlashportDef).skillDescriptionToken = "ES_MERC_SPECIAL_SLASHPORT_UPGRADED_DESCRIPTION"; skillName = (((Object)mercSlashportDef).name = "ESSlashport_UG"); ((SkillDef)mercSlashportDef).skillName = skillName; ((SkillDef)mercSlashportDef).skillNameToken = "ES_MERC_SPECIAL_SLASHPORT_UPGRADED_NAME"; defList.Add((SkillDef)(object)mercSlashportDef); value = skillsToHandle["ESSlashport"]; value.upgradedSkillDef = (SkillDef)(object)mercSlashportDef; skillsToHandle["ESSlashport"] = value; ContentAddition.AddEntityState<SlashportEntityUpgrade>(ref flag); GroundedSkillDef val = ScriptableObject.CreateInstance<GroundedSkillDef>(); ((SkillDef)val).activationState = new SerializableEntityStateType(typeof(DirectiveRootUpgraded)); ((SkillDef)val).activationStateMachineName = "Weapon"; ((SkillDef)val).baseMaxStock = 1; ((SkillDef)val).baseRechargeInterval = 12f; ((SkillDef)val).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val).fullRestockOnAssign = false; ((SkillDef)val).interruptPriority = (InterruptPriority)1; ((SkillDef)val).isCombatSkill = true; ((SkillDef)val).mustKeyPress = true; ((SkillDef)val).canceledFromSprinting = true; ((SkillDef)val).cancelSprintingOnActivation = true; ((SkillDef)val).forceSprintDuringState = false; ((SkillDef)val).rechargeStock = 1; ((SkillDef)val).requiredStock = 1; ((SkillDef)val).stockToConsume = 1; ((SkillDef)val).icon = Sprites.rexrootUpgradedIconS; ((SkillDef)val).skillDescriptionToken = "ES_TREEBOT_SPECIAL_ROOT_UPGRADED_DESCRIPTION"; skillName = (((Object)val).name = "ESRoot_UG"); ((SkillDef)val).skillName = skillName; ((SkillDef)val).skillNameToken = "ES_TREEBOT_SPECIAL_ROOT_UPGRADED_NAME"; defList.Add((SkillDef)(object)val); value = skillsToHandle["ESRoot"]; value.upgradedSkillDef = (SkillDef)(object)val; skillsToHandle["ESRoot"] = value; ContentAddition.AddEntityState<DirectiveRootUpgraded>(ref flag); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void SetScepterReplacements() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) foreach (KeyValuePair<string, SkillUpgradeContainer> item in skillsToHandle) { SkillUpgradeContainer value = item.Value; Item<Scepter>.instance.RegisterScepterSkill(value.upgradedSkillDef, value.body + "Body", value.slot, value.normalSkillDef); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] internal static void SetStandaloneScepterReplacements() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) foreach (KeyValuePair<string, SkillUpgradeContainer> item in skillsToHandle) { SkillUpgradeContainer value = item.Value; ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(value.upgradedSkillDef, value.body + "Body", value.slot, value.index); } } } internal class AcridPurgeTracker : MonoBehaviour { public CharacterBody characterBody; private static readonly float maxTrackingDistance = 50000f; private float poisonCounter; private float totalPoisoned; private static readonly float trackerUpdateFrequency = 10f; private float trackerUpdateStopwatch; public InputBankTest inputBank; public TeamComponent teamComponent; private void Start() { characterBody = ((Component)this).GetComponent<CharacterBody>(); inputBank = ((Component)this).GetComponent<InputBankTest>(); teamComponent = ((Component)this).GetComponent<TeamComponent>(); } private void FixedUpdate() { //IL_0055: 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_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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) trackerUpdateStopwatch += Time.fixedDeltaTime; if (!(trackerUpdateStopwatch >= 1f / trackerUpdateFrequency)) { return; } trackerUpdateStopwatch -= 1f / trackerUpdateFrequency; poisonCounter = 0f; HurtBox[] hurtBoxes = new SphereSearch { origin = characterBody.footPosition, radius = maxTrackingDistance, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(teamComponent.teamIndex)).OrderCandidatesByDistance() .FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(); foreach (HurtBox val in hurtBoxes) { CharacterBody body = val.healthComponent.body; body.RecalculateStats(); if (body.HasBuff(Buffs.Poisoned) || body.HasBuff(Buffs.Blight)) { poisonCounter += 1f; } } totalPoisoned = poisonCounter; } public float GetPoisonedCount() { return totalPoisoned; } } internal class InvisHandler : MonoBehaviour { public float spp_stunRadius = 0f; public float spp_moveSpeedBonus = 1f; private bool isInvis; private CharacterBody characterBody; private static readonly float baseTimeTilInvis = 0.8f; private static readonly float buffDuration = Configuration.GetConfigValue<float>(Configuration.BanditInvissprintBuffduration); private float holdTimer; private float timeTilInvis; private static readonly string enterSoundString = "Play_bandit2_shift_enter"; private static readonly string exitSoundString = "Play_bandit2_shift_exit"; private static readonly string muzzleString = "MuzzleSmokebomb"; private GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2SmokeBomb.prefab").WaitForCompletion(); private InputBankTest bank; private GenericSkill utilitySlot; private void Start() { timeTilInvis = baseTimeTilInvis; characterBody = ((Component)this).GetComponent<CharacterBody>(); utilitySlot = characterBody.skillLocator.utility; isInvis = false; bank = ((Component)this).GetComponent<InputBankTest>(); } internal void MakeInvis() { if (NetworkServer.active) { characterBody.AddBuff(Buffs.Cloak); characterBody.AddBuff(Buffs.CloakSpeed); } isInvis = true; timeTilInvis = baseTimeTilInvis; holdTimer = utilitySlot.rechargeStopwatch; PlayEffects(); characterBody.characterMotor.walkSpeedPenaltyCoefficient = spp_moveSpeedBonus; } internal void RemoveInvis() { //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_0081: 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) //IL_0094: 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_00a7: 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) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_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_00dd: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { characterBody.RemoveBuff(Buffs.Cloak); characterBody.RemoveBuff(Buffs.CloakSpeed); characterBody.AddTimedBuff(BuffsLoading.buffDefCunning, buffDuration); } utilitySlot.DeductStock(1); isInvis = false; PlayEffects(); if (spp_stunRadius > 0f) { new BlastAttack { baseDamage = 0f, radius = spp_stunRadius, attacker = null, inflictor = null, teamIndex = characterBody.teamComponent.teamIndex, crit = false, losType = (LoSType)0, position = characterBody.corePosition, damageType = DamageTypeCombo.op_Implicit((DamageType)32) }.Fire(); } characterBody.characterMotor.walkSpeedPenaltyCoefficient = 1f; } private void FixedUpdate() { if (characterBody.isSprinting && !isInvis) { if (timeTilInvis > 0f) { timeTilInvis -= Time.fixedDeltaTime; } else if (characterBody.skillLocator.utility.stock > 0) { MakeInvis(); } } else if (!characterBody.isSprinting) { if (isInvis) { RemoveInvis(); } timeTilInvis = baseTimeTilInvis; } if (isInvis) { utilitySlot.rechargeStopwatch = holdTimer; } if (bank.skill2.down && isInvis) { RemoveInvis(); } } internal bool IsInvis() { return isInvis; } private void PlayEffects() { EffectManager.SimpleMuzzleFlash(effectPrefab, ((Component)this).gameObject, muzzleString, false); string text = (isInvis ? enterSoundString : exitSoundString); Util.PlaySound(text, ((Component)this).gameObject); } } internal class MicroMissileDelayedImpact : MonoBehaviour { public static float spp_radiusMult = 1f; private ProjectileImpactExplosion explosion; private ProjectileTargetComponent homing; private Transform tracker; private float delay = 0.2f; private void Start() { explosion = ((Component)this).GetComponent<ProjectileImpactExplosion>(); homing = ((Component)this).GetComponent<ProjectileTargetComponent>(); tracker = homing.target; ((Component)this).GetComponent<MissileController>().maxVelocity = Random.Range(20f, 25f); ((ProjectileExplosion)explosion).blastRadius = 5f * spp_radiusMult; } private void FixedUpdate() { //IL_0031: 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) homing.target = tracker; if ((Object)(object)homing.target == (Object)null || Vector3.Distance(homing.target.position, ((Component)this).transform.position) < 3f) { Object.Destroy((Object)(object)((Component)this).gameObject); ((ProjectileExplosion)explosion).Detonate(); } if (delay > 0f) { delay -= Time.deltaTime; } else { explosion.destroyOnEnemy = (explosion.destroyOnWorld = true); } } } internal class MicroMissileLauncher : MonoBehaviour { private static int salvoBonusCount = Configuration.GetConfigValue<int>(Configuration.EngiMicromissileSalvocount); private GameObject owner; private ProjectileDamage damage; private ProjectileStickOnImpact stick; private float delay = 0.6f; private bool fired = false; private bool hasStuck = false; private void Start() { stick = ((Component)this).GetComponent<ProjectileStickOnImpact>(); } private void FixedUpdate() { if (delay > 0f) { delay -= Time.fixedDeltaTime; } else if (!fired) { LaunchMissiles(); fired = true; } if (stick.stuck && !hasStuck) { hasStuck = true; } if (!stick.stuck && hasStuck) { Object.Destroy((Object)(object)((Component)this).gameObject); } if (Object.op_Implicit((Object)(object)stick.stuckBody) && Object.op_Implicit((Object)(object)stick.stuckBody.healthComponent) && !stick.stuckBody.healthComponent.alive) { Object.Destroy((Object)(object)((Component)this).gameObject); } } internal void LaunchMissiles() { //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_0064: 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_006c: Invalid comparison between Unknown and I4 //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_00a8: Unknown result type (might be due to invalid IL or missing references) ProjectileController component = ((Component)this).GetComponent<ProjectileController>(); damage = ((Component)this).GetComponent<ProjectileDamage>(); owner = component.owner; FireEngi(4); CharacterMaster master = owner.GetComponent<CharacterBody>().master; if (master.deployablesList == null) { return; } foreach (DeployableInfo deployables in master.deployablesList) { if ((int)deployables.slot == 1 && Vector3.Distance(((Component)deployables.deployable).GetComponent<CharacterMaster>().GetBody().corePosition, ((Component)this).transform.position) <= 60f) { FireTurret(((Component)deployables.deployable).gameObject, 2 + salvoBonusCount); } } } private void FireEngi(int count) { //IL_001a: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) string text = "MuzzleLeft"; for (int i = 1; i <= count; i++) { Vector3 position = owner.transform.position; ModelLocator component = owner.GetComponent<ModelLocator>(); if (Object.op_Implicit((Object)(object)component)) { Transform modelTransform = component.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component2 = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component2)) { Transform val = component2.FindChild(text); if (Object.op_Implicit((Object)(object)val)) { position = val.position; } } } } Fire(position); text = ((text == "MuzzleLeft") ? "MuzzleRight" : "MuzzleLeft"); } } private void FireTurret(GameObject turretObject, int count) { //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_0088: 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_007e: Unknown result type (might be due to invalid IL or missing references) CharacterMaster component = turretObject.GetComponent<CharacterMaster>(); GameObject bodyObject = component.GetBodyObject(); ModelLocator component2 = bodyObject.GetComponent<ModelLocator>(); Vector3 position = turretObject.transform.position; if (Object.op_Implicit((Object)(object)component2)) { Transform modelTransform = component2.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component3 = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component3)) { Transform val = component3.FindChild("Muzzle"); if (Object.op_Implicit((Object)(object)val)) { position = val.position; } } } } for (int i = 1; i <= count; i++) { Fire(position); } } private void Fire(Vector3 origin) { //IL_000c: 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_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_0044: 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_0046: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) Vector3 val = owner.transform.forward; InputBankTest component = owner.GetComponent<InputBankTest>(); if (Object.op_Implicit((Object)(object)component)) { val = component.aimDirection; } if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Projectiles.micromissilePrefab, origin, Quaternion.LookRotation(val), owner, damage.damage / MicroMissileEntity.damageCoef, 0f, damage.crit, (DamageColorIndex)0, ((Component)this).gameObject, -1f, (DamageTypeCombo?)DamageTypeCombo.GenericPrimary); } } } [RequireComponent(typeof(CharacterBody))] [RequireComponent(typeof(InputBankTest))] [RequireComponent(typeof(TeamComponent))] public class MercSlashportTracker : MonoBehaviour { public BullseyeSearch search = new BullseyeSearch(); public CharacterBody characterBody; public readonly float trackerUpdateFrequency = 10f; public float trackerUpdateStopwatch; public readonly float maxTrackingAngle = 15f; public readonly float maxTrackingDistance = 45f; public HurtBox trackingTarget; public Indicator indicator; public InputBankTest inputBank; public TeamComponent teamComponent; private void Start() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown indicator = new Indicator(((Component)this).gameObject, Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressTrackingIndicator.prefab").WaitForCompletion()); characterBody = ((Component)this).GetComponent<CharacterBody>(); inputBank = ((Component)this).GetComponent<InputBankTest>(); teamComponent = ((Component)this).GetComponent<TeamComponent>(); } public HurtBox GetTrackingTarget() { return trackingTarget; } private void FixedUpdate() { //IL_0057: 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_006d: Unknown result type (might be due to invalid IL or missing references) trackerUpdateStopwatch += Time.fixedDeltaTime; if (trackerUpdateStopwatch >= 1f / trackerUpdateFrequency) { trackerUpdateStopwatch -= 1f / trackerUpdateFrequency; HurtBox val = trackingTarget; Ray aimRay = default(Ray); ((Ray)(ref aimRay))..ctor(inputBank.aimOrigin, inputBank.aimDirection); SearchForTarget(aimRay); indicator.targetTransform = (Object.op_Implicit((Object)(object)trackingTarget) ? ((Component)trackingTarget).transform : null); } if (characterBody.skillLocator.special.cooldownRemaining <= 0f) { indicator.active = true; } else { indicator.active = false; } } private void SearchForTarget(Ray aimRay) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0042: 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_0053: Unknown result type (might be due to invalid IL or missing references) search.teamMaskFilter = TeamMask.GetUnprotectedTeams(teamComponent.teamIndex); search.filterByLoS = true; search.searchOrigin = ((Ray)(ref aimRay)).origin; search.searchDirection = ((Ray)(ref aimRay)).direction; search.sortMode = (SortMode)1; search.maxDistanceFilter = maxTrackingDistance; search.maxAngleFilter = maxTrackingAngle; search.RefreshCandidates(); search.FilterOutGameObject(((Component)this).gameObject); trackingTarget = search.GetResults().FirstOrDefault(); } } public class OnStuckCaller : MonoBehaviour { private bool flag = true; private bool flag2 = true; private static readonly float baseCountDown = 3f; private float countDown; private static readonly float radiusMax = 25f; private float stopwatch; private static readonly float stopwatchMax = 1f; private GameObject indicator; private GameObject owner; private GameObject areaPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion(); private ProjectileController controller; private ProjectileStickOnImpact stick; private void Start() { //IL_006f: 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) countDown = baseCountDown; stopwatch = stopwatchMax; owner = ((Component)this).GetComponent<ProjectileController>().owner; stick = ((Component)this).GetComponent<ProjectileStickOnImpact>(); controller = ((Component)this).GetComponent<ProjectileController>(); indicator = Object.Instantiate<GameObject>(areaPrefab); indicator.SetActive(true); indicator.transform.position = ((Component)this).transform.position; indicator.transform.localScale = Vector3.zero; } private void FixedUpdate() { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) if (stick.stuck) { flag2 = false; } if (flag2) { return; } if (countDown > 0f) { MarkAffectedZone(); countDown -= Time.fixedDeltaTime; } else if (flag) { flag = false; indicator.transform.localScale = Vector3.zero; indicator.SetActive(false); Object.Destroy((Object)(object)indicator); if (NetworkServer.active) { owner.GetComponent<SwarmComponent>()?.GetTargets(((Component)controller).transform.position); } } } private void MarkAffectedZone() { //IL_0045: 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_0066: Unknown result type (might be due to invalid IL or missing references) if (stopwatch >= 0f) { stopwatch -= Time.fixedDeltaTime; } else { stopwatch = stopwatchMax; } indicator.transform.position = ((Component)this).transform.position; indicator.transform.localScale = Vector3.one * GenerateLogScaleCurve(); } private float GenerateLogScaleCurve() { float num = stopwatchMax - stopwatch; float num2 = Math.ConvertToRange(0f, stopwatchMax, 1f, radiusMax, num); float num3 = (0f - radiusMax) / Mathf.Log(1f / radiusMax); return Mathf.Log(num2) * num3; } } [RequireComponent(typeof(TeamComponent))] [RequireComponent(typeof(CharacterBody))] internal class SwarmComponent : MonoBehaviour { internal static float spp_damageMult = 1f; internal static int spp_swarmBonus = 0; internal static float spp_healMult = 1f; private CharacterBody ownerBody; private static readonly float damageCoefficient = 0.8f * spp_damageMult; private static readonly float healCoef = 0.015f * spp_healMult; private static readonly float maxQueueTimer = 0.05f; private static readonly float nanoProcCoef = 0.4f; private float queueTimer; private static readonly int nanoBotCount = Configuration.GetConfigValue<int>(Configuration.ToolbotNanobotCountperenemy) + spp_swarmBonus; private List<HurtBox> hurtBoxesList; private void Start() { ownerBody = ((Component)this).GetComponent<CharacterBody>(); hurtBoxesList = new List<HurtBox>(); queueTimer = maxQueueTimer; } private void CallSwarm(HurtBox hurtBox) { //IL_004d: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) NanobotOrb nanobotOrb = new NanobotOrb(); ((GenericDamageOrb)nanobotOrb).attacker = ((Component)this).gameObject; ((GenericDamageOrb)nanobotOrb).damageValue = ownerBody.damage * damageCoefficient; nanobotOrb.healthFraction = healCoef; ((GenericDamageOrb)nanobotOrb).isCrit = ownerBody.RollCrit(); ((Orb)nanobotOrb).origin = ownerBody.corePosition; ((Orb)nanobotOrb).target = hurtBox.hurtBoxGroup.mainHurtBox; ((GenericDamageOrb)nanobotOrb).procCoefficient = nanoProcCoef; ((GenericDamageOrb)nanobotOrb).damageType = DamageTypeCombo.GenericSecondary; if (NetworkServer.active) { OrbManager.instance.AddOrb((Orb)(object)nanobotOrb); } } internal void GetTargets(Vector3 impactPos) { //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) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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: 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_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) HurtBox[] hurtBoxes = new SphereSearch { origin = impactPos, radius = 25f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(((Component)this).GetComponent<TeamComponent>().teamIndex)).OrderCandidatesByDistance() .FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(); foreach (HurtBox hurtBox in hurtBoxes) { AddToTargets(hurtBox); } } private void AddToTargets(HurtBox hurtBox) { for (int i = 0; i < nanoBotCount; i++) { hurtBoxesList.Add(hurtBox); List<HurtBox> list = new List<HurtBox>(); while (hurtBoxesList.Count > 0) { int index = Random.Range(1, hurtBoxesList.Count) - 1; list.Add(hurtBoxesList.ElementAt(index)); hurtBoxesList.RemoveAt(index); } hurtBoxesList = list; } } private void FixedUpdate() { if (hurtBoxesList.Count <= 0) { return; } if (queueTimer > 0f) { queueTimer -= Time.fixedDeltaTime; return; } while (!Object.op_Implicit((Object)(object)hurtBoxesList.ElementAt(0))) { hurtBoxesList.RemoveAt(0); } CallSwarm(hurtBoxesList.ElementAt(0)); hurtBoxesList.RemoveAt(0); queueTimer = 0.05f; } } } namespace EggsSkills.Stats { internal class Statdefs { internal static readonly StatDef totalCrocoDotDamage = StatDef.Register("totalCrocoDotDamage", (StatRecordType)0, (StatDataType)0, 0.01, (DisplayValueFormatterDelegate)null); internal static void InitStatHooks() { GlobalEventManager.onServerDamageDealt += OnDamageDealt; } private static void OnDamageDealt(DamageReport report) { //IL_002b: 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_003d: 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_004c: 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_005b: Invalid comparison between Unknown and I4 if (Object.op_Implicit((Object)(object)report.attacker)) { StatSheet val = PlayerStatsComponent.FindMasterStatSheet(report.attackerMaster); if (val != null && report.attackerBodyIndex == StatManager.crocoBodyIndex && (int)DamageTypeCombo.op_Implicit(report.damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)67108864)) == 67108864) { val.PushStatValue(totalCrocoDotDamage, (ulong)report.damageDealt); } } } } } namespace EggsSkills.Unlocks { internal static class UnlocksRegistering { private static List<UnlockableDef> unlockList = new List<UnlockableDef>(); internal static UnlockableDef acridPurgeUnlockDef; internal static UnlockableDef acridPoisonbreathUnlockDef; internal static UnlockableDef artificerZapportUnlockDef; internal static UnlockableDef banditInvisSprintUnlockDef; internal static UnlockableDef banditMagicBulletUnlockDef; internal static UnlockableDef captainDebuffnadeUnlockDef; internal static UnlockableDef captainAutoshotgunUnlockDef; internal static UnlockableDef commandoDashUnlockDef; internal static UnlockableDef commandoShotgunUnlockDef; internal static UnlockableDef engiTeslaUnlockDef; internal static UnlockableDef engiMicromissileUnlockDef; internal static UnlockableDef huntressClusterarrowUnlockDef; internal static UnlockableDef loaderShieldsplosionUnlockDef; internal static UnlockableDef mercSlashportUnlockDef; internal static UnlockableDef multNanobeaconUnlockDef; internal static UnlockableDef railgunnerLanceroundsUnlockDef; internal static UnlockableDef rexRootUnlockDef; internal static UnlockableDef voidsurvivorInversionUnlockDef; internal static void RegisterUnlockables() { Statdefs.InitStatHooks(); try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCrocoSkills)) { AcridUnlockables(); } } catch { Log.LogError("Failed to load Acrid achivements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableMageSkills)) { ArtificerUnlockables(); } } catch { Log.LogError("Failed to load Artificer achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableBanditSkills)) { BanditUnlockables(); } } catch { Log.LogError("Failed to load Bandit achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCaptainSkills)) { CaptainUnlockables(); } } catch { Log.LogError("Failed to load Captain achivements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableCommandoSkills)) { CommandoUnlockables(); } } catch { Log.LogError("Failed to load Commando achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableEngiSkills)) { EngiUnlockables(); } } catch { Log.LogError("Failed to load Engineer achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableHuntressSkills)) { HuntressUnlockables(); } } catch { Log.LogError("Failed to load Huntress achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableLoaderSkills)) { LoaderUnlockables(); } } catch { Log.LogError("Failed to load Loader achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableMercSkills)) { MercUnlockables(); } } catch { Log.LogError("Failed to load Mercenary achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableToolbotSkills)) { MulTUnlockables(); } } catch { Log.LogError("Failed to load MUL-T achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableRailgunnerSkills)) { RailgunnerUnlockables(); } } catch { Log.LogError("Failed to load Railgunner achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableTreebotSkills)) { RexUnlockables(); } } catch { Log.LogError("Failed to load REX achievements"); } try { if (Configuration.GetConfigValue<bool>(Configuration.EnableVoidfiendSkills)) { VoidsurvivorUnlockables(); } } catch { Log.LogError("Failed to load Void Fiend achievements"); } foreach (UnlockableDef unlock in unlockList) { ContentAddition.AddUnlockableDef(unlock); Log.LogMessage("Unlockdef: " + unlock.cachedName + " registered!"); } Log.LogMessage("Achievements registered"); } internal static void AcridUnlockables() { acr