Decompiled source of RiskyMod v2.2.4
plugins/Risky_Lives-RiskyMod/RiskyMod.dll
Decompiled 9 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AI_Blacklist; using AncientScepter; using ArtifactOfPotential; using AssistManager; using AssistManager.VanillaTweaks; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using DefenseMatrixManager; using EntityStates; using EntityStates.Bandit2.Weapon; using EntityStates.Bison; using EntityStates.Captain.Weapon; using EntityStates.CaptainDefenseMatrixItem; using EntityStates.CaptainSupplyDrop; using EntityStates.Commando; using EntityStates.Croco; using EntityStates.Drone; using EntityStates.Drone.DroneWeapon; using EntityStates.Engi.EngiBubbleShield; using EntityStates.Engi.Mine; using EntityStates.Headstompers; using EntityStates.Huntress; using EntityStates.LemurianMonster; using EntityStates.Loader; using EntityStates.LunarWisp; using EntityStates.Mage; using EntityStates.MagmaWorm; using EntityStates.MajorConstruct.Weapon; using EntityStates.Missions.BrotherEncounter; using EntityStates.RiskyMod.Bandit2; using EntityStates.RiskyMod.Bandit2.Primary; using EntityStates.RiskyMod.Bandit2.Revolver; using EntityStates.RiskyMod.Bandit2.Revolver.Scepter; using EntityStates.RiskyMod.Captain; using EntityStates.RiskyMod.Captain.Beacon; using EntityStates.RiskyMod.Commando; using EntityStates.RiskyMod.Commando.Scepter; using EntityStates.RiskyMod.Croco; using EntityStates.RiskyMod.Huntress; using EntityStates.RiskyMod.Mage; using EntityStates.RiskyMod.Mage.Weapon; using EntityStates.RiskyMod.MegaDrone; using EntityStates.RiskyMod.Turret1; using EntityStates.TitanMonster; using EntityStates.Toolbot; using EntityStates.Treebot.Weapon; using EntityStates.VoidInfestor; using EntityStates.VoidSurvivor; using HG; using IL.EntityStates.Bandit2.Weapon; using IL.EntityStates.Bison; using IL.EntityStates.Captain.Weapon; using IL.EntityStates.CaptainSupplyDrop; using IL.EntityStates.Commando.CommandoWeapon; using IL.EntityStates.Croco; using IL.EntityStates.Drone; using IL.EntityStates.Drone.DroneWeapon; using IL.EntityStates.Engi.Mine; using IL.EntityStates.Headstompers; using IL.EntityStates.JellyfishMonster; using IL.EntityStates.Loader; using IL.EntityStates.Mage; using IL.EntityStates.ParentMonster; using IL.EntityStates.TitanMonster; using IL.EntityStates.Toolbot; using IL.EntityStates.VagrantMonster; using IL.EntityStates.VagrantNovaItem; using IL.EntityStates.VoidInfestor; using IL.RoR2; using IL.RoR2.Artifacts; using IL.RoR2.Items; using IL.RoR2.Projectile; using Inferno; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using Moonstorm.Starstorm2.Interactables; using NS_KingKombatArena; using On.EntityStates; using On.EntityStates.Bandit2.Weapon; using On.EntityStates.CaptainDefenseMatrixItem; using On.EntityStates.CaptainSupplyDrop; using On.EntityStates.Commando; using On.EntityStates.Croco; using On.EntityStates.Drone.DroneWeapon; using On.EntityStates.Engi.EngiBubbleShield; using On.EntityStates.Headstompers; using On.EntityStates.LemurianMonster; using On.EntityStates.Loader; using On.EntityStates.LunarWisp; using On.EntityStates.MagmaWorm; using On.EntityStates.MajorConstruct.Weapon; using On.EntityStates.Missions.BrotherEncounter; using On.EntityStates.TitanMonster; using On.EntityStates.Toolbot; using On.EntityStates.Treebot.Weapon; using On.EntityStates.VoidSurvivor; using On.RoR2; using On.RoR2.CharacterAI; using On.RoR2.Items; using On.RoR2.Projectile; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RiskyMod; using RiskyMod.Allies; using RiskyMod.Allies.DamageResistances; using RiskyMod.Allies.DroneBehaviors; using RiskyMod.Allies.DroneChanges; using RiskyMod.Content; using RiskyMod.Content.Enemies; using RiskyMod.Enemies; using RiskyMod.Enemies.Bosses; using RiskyMod.Enemies.DLC1; using RiskyMod.Enemies.DLC1.Voidling; using RiskyMod.Enemies.DLC2; using RiskyMod.Enemies.Mithrix; using RiskyMod.Enemies.Mobs; using RiskyMod.Enemies.Mobs.Lunar; using RiskyMod.Enemies.Spawnpools; using RiskyMod.Fixes; using RiskyMod.Items; using RiskyMod.Items.Boss; using RiskyMod.Items.Common; using RiskyMod.Items.DLC1.Boss; using RiskyMod.Items.DLC1.Common; using RiskyMod.Items.DLC1.Equipment; using RiskyMod.Items.DLC1.Legendary; using RiskyMod.Items.DLC1.Uncommon; using RiskyMod.Items.DLC1.Void; using RiskyMod.Items.Equipment; using RiskyMod.Items.Legendary; using RiskyMod.Items.Lunar; using RiskyMod.Items.Uncommon; using RiskyMod.MonoBehaviours; using RiskyMod.Moon; using RiskyMod.SharedHooks; using RiskyMod.Survivors; using RiskyMod.Survivors.Bandit2; using RiskyMod.Survivors.Bandit2.Components; using RiskyMod.Survivors.Captain; using RiskyMod.Survivors.Commando; using RiskyMod.Survivors.Croco; using RiskyMod.Survivors.Croco.Contagion; using RiskyMod.Survivors.Croco.Contagion.Components; using RiskyMod.Survivors.Croco.Tweaks; using RiskyMod.Survivors.DLC1.VoidFiend; using RiskyMod.Survivors.Engi; using RiskyMod.Survivors.Huntress; using RiskyMod.Survivors.Loader; using RiskyMod.Survivors.Mage; using RiskyMod.Survivors.Mage.Components; using RiskyMod.Survivors.Mage.SkillTweaks; using RiskyMod.Survivors.Merc; using RiskyMod.Survivors.Toolbot; using RiskyMod.Survivors.Treebot; using RiskyMod.Tweaks; using RiskyMod.Tweaks.Artifact; using RiskyMod.Tweaks.CharacterMechanics; using RiskyMod.Tweaks.Holdouts; using RiskyMod.Tweaks.RunScaling; using RiskyMod.VoidFields; using RiskyMod.VoidLocus; using RiskyTweaks.FireSelect; using RiskyTweaks.Tweaks; using RiskyTweaks.Tweaks.Survivors.Bandit2; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Items; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.Stats; using RoR2.UI; using ShareSuite; using SneedUtils; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using Zio.FileSystems; [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("RiskyMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+4d9ded14301cc860a012fb2e9b695ca0bd358d4e")] [assembly: AssemblyProduct("RiskyMod")] [assembly: AssemblyTitle("RiskyMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace SneedUtils { public class SneedUtils { public enum MonsterCategories { BasicMonsters, Minibosses, Champions } public static GameObject teleportHelperPrefab = LegacyResourcesAPI.Load<GameObject>("SpawnCards/HelperPrefab"); public static void AddCooldownBuff(CharacterBody body, BuffDef buff, int cooldown, float bonusDuration = 0f) { body.ClearTimedBuffs(buff); for (int i = 0; i < cooldown; i++) { body.AddTimedBuff(buff, (float)i + 1f + bonusDuration); } } public static void AddModdedDamageTypeToProjectile(GameObject projectile, ModdedDamageType[] moddedDamageTypes) { if (Object.op_Implicit((Object)(object)projectile)) { ModdedDamageTypeHolderComponent val = projectile.GetComponent<ModdedDamageTypeHolderComponent>(); if (!Object.op_Implicit((Object)(object)val)) { val = projectile.AddComponent<ModdedDamageTypeHolderComponent>(); } for (int i = 0; i < moddedDamageTypes.Length; i++) { val.Add(moddedDamageTypes[i]); } } } public static void AddModdedDamageTypeToProjectile(GameObject projectile, ModdedDamageType moddedDamageType) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)projectile)) { ModdedDamageTypeHolderComponent val = projectile.GetComponent<ModdedDamageTypeHolderComponent>(); if (!Object.op_Implicit((Object)(object)val)) { val = projectile.AddComponent<ModdedDamageTypeHolderComponent>(); } val.Add(moddedDamageType); } } public static bool RemoveMonsterSpawnCardFromCategory(DirectorCardCategorySelection categorySelection, SpawnCard spawnCard, MonsterCategories monsterCategory) { int num = FindCategoryIndexByName(categorySelection, monsterCategory); if (num >= 0 && categorySelection.categories[num].cards != null) { int num2 = categorySelection.categories[num].cards.Length; categorySelection.categories[num].cards = categorySelection.categories[num].cards.Where((DirectorCard dc) => (Object)(object)dc.spawnCard != (Object)(object)spawnCard).ToArray(); return categorySelection.categories[num].cards.Length < num2; } return false; } public static bool AddMonsterDirectorCardToCategory(DirectorCardCategorySelection categorySelection, DirectorCard directorCard, MonsterCategories monsterCategory) { int num = FindCategoryIndexByName(categorySelection, monsterCategory); if (num >= 0) { categorySelection.AddCard(num, directorCard); return true; } return false; } public static int FindCategoryIndexByName(DirectorCardCategorySelection dcs, MonsterCategories category) { string categoryName; switch (category) { case MonsterCategories.BasicMonsters: categoryName = "Basic Monsters"; break; case MonsterCategories.Minibosses: categoryName = "Minibosses"; break; case MonsterCategories.Champions: categoryName = "Champions"; break; default: return -1; } return FindCategoryIndexByName(dcs, categoryName); } public static int FindCategoryIndexByName(DirectorCardCategorySelection dcs, string categoryName) { for (int i = 0; i < dcs.categories.Length; i++) { if (string.CompareOrdinal(dcs.categories[i].name, categoryName) == 0) { return i; } } return -1; } public static bool ReplaceSkillDef(SkillFamily skillFamily, SkillDef targetSkill, SkillDef newSkill) { bool flag = false; if (skillFamily.variants != null && (Object)(object)targetSkill != (Object)null && (Object)(object)newSkill != (Object)null) { for (int i = 0; i < skillFamily.variants.Length; i++) { if ((Object)(object)skillFamily.variants[i].skillDef == (Object)(object)targetSkill) { skillFamily.variants[i].skillDef = newSkill; flag = true; break; } } } if (!flag) { Debug.LogError((object)("RiskyMod: Could not replace TargetSkill " + (object)targetSkill)); } return flag; } public static bool ShouldRunInfernoChange() { return !EnemiesCore.infernoCompat || !CheckInfernoActive(); } public static bool CheckInfernoActive() { bool result = false; if (SoftDependencies.InfernoPluginLoaded) { result = CheckInfernoActiveInternal(); } return result; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static bool CheckInfernoActiveInternal() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) return (Object)(object)Run.instance != (Object)null && Run.instance.selectedDifficulty == Main.InfernoDiffIndex; } public static bool GetKeyPressed(ConfigEntry<KeyboardShortcut> entry) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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) KeyboardShortcut value = entry.Value; foreach (KeyCode modifier in ((KeyboardShortcut)(ref value)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } value = entry.Value; return Input.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey); } public static Vector3 FindSafeTeleportPosition(GameObject gameObject, Vector3 targetPosition) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) return FindSafeTeleportPosition(gameObject, targetPosition, float.NegativeInfinity, float.NegativeInfinity); } public static Vector3 FindSafeTeleportPosition(GameObject gameObject, Vector3 targetPosition, float idealMinDistance, float idealMaxDistance) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>(); val.hullSize = (HullClassification)0; val.nodeGraphType = (GraphType)0; val.prefab = teleportHelperPrefab; Vector3 result = targetPosition; GameObject val2 = null; if (idealMaxDistance > 0f && idealMinDistance < idealMaxDistance) { val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule { placementMode = (PlacementMode)1, minDistance = idealMinDistance, maxDistance = idealMaxDistance, position = targetPosition }, RoR2Application.rng)); } if (!Object.op_Implicit((Object)(object)val2)) { val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule { placementMode = (PlacementMode)3, position = targetPosition }, RoR2Application.rng)); if (Object.op_Implicit((Object)(object)val2)) { result = val2.transform.position; } } if (Object.op_Implicit((Object)(object)val2)) { Object.Destroy((Object)(object)val2); } Object.Destroy((Object)(object)val); return result; } public static void StunEnemiesInSphere(CharacterBody body, float radius) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.teamComponent)) { return; } List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(body.corePosition, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.healthComponent) || list.Contains(component.healthComponent)) { continue; } list.Add(component.healthComponent); if (Object.op_Implicit((Object)(object)component.healthComponent.body.teamComponent) && component.healthComponent.body.teamComponent.teamIndex != body.teamComponent.teamIndex) { SetStateOnHurt component2 = ((Component)component.healthComponent).gameObject.GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component2) && component2.canBeStunned) { component2.SetStun(1f); } } } } public static void FixSkillName(SkillDef skillDef) { ((Object)skillDef).name = skillDef.skillName; } public static BuffDef CreateBuffDef(string name, bool canStack, bool isCooldown, bool isDebuff, Color color, Sprite iconSprite) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); ((Object)val).name = name; val.canStack = canStack; val.isCooldown = isCooldown; val.isDebuff = isDebuff; val.buffColor = color; val.iconSprite = iconSprite; Content.buffDefs.Add(val); ((Object)val).name = ((Object)val).name; return val; } public static bool IsLocalUser(GameObject playerObject) { foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)playerObject == (Object)(object)readOnlyLocalUsers.cachedBodyObject) { return true; } } return false; } public static bool IsLocalUser(CharacterBody playerBody) { foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)playerBody == (Object)(object)readOnlyLocalUsers.cachedBody) { return true; } } return false; } public static int FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team, bool airborneOnly = false) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) int num = 0; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { continue; } HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && !list.Contains(healthComponent)) { list.Add(healthComponent); if (Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && (!airborneOnly || healthComponent.body.isFlying || (Object.op_Implicit((Object)(object)healthComponent.body.characterMotor) && !healthComponent.body.characterMotor.isGrounded))) { num++; } } } return num; } public static bool IsEnemyInSphere(float radius, Vector3 position, TeamIndex team, bool airborneOnly = false) { //IL_0007: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { continue; } HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && !list.Contains(healthComponent)) { list.Add(healthComponent); if (Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && (!airborneOnly || healthComponent.body.isFlying || (Object.op_Implicit((Object)(object)healthComponent.body.characterMotor) && !healthComponent.body.characterMotor.isGrounded))) { return true; } } } return false; } public static void RemoveItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) if (!itemDef.ContainsTag(tag)) { return; } List<ItemTag> list = itemDef.tags.ToList(); list.Remove(tag); itemDef.tags = list.ToArray(); ItemIndex itemIndex = itemDef.itemIndex; if ((int)itemIndex != -1 && ItemCatalog.itemIndicesByTag != null && ItemCatalog.itemIndicesByTag[tag] != null) { List<ItemIndex> list2 = ItemCatalog.itemIndicesByTag[tag].ToList(); if (list2.Contains(itemIndex)) { list2.Remove(itemIndex); ItemCatalog.itemIndicesByTag[tag] = list2.ToArray(); } } } public static void AddItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Invalid comparison between Unknown and I4 //IL_0050: 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_006d: 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) if (itemDef.ContainsTag(tag)) { return; } List<ItemTag> list = itemDef.tags.ToList(); list.Add(tag); itemDef.tags = list.ToArray(); ItemIndex itemIndex = itemDef.itemIndex; if ((int)itemIndex != -1 && ItemCatalog.itemIndicesByTag != null) { List<ItemIndex> list2 = ItemCatalog.itemIndicesByTag[tag].ToList(); if (!list2.Contains(itemIndex)) { list2.Add(itemIndex); ItemCatalog.itemIndicesByTag[tag] = list2.ToArray(); } } } public static void DumpEntityStateConfig(EntityStateConfiguration esc) { for (int i = 0; i < esc.serializedFieldsCollection.serializedFields.Length; i++) { if (Object.op_Implicit(esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)) { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + (object)esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)); } else { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + esc.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue)); } } } public static void DumpEntityStateConfig(string entityStateName) { EntityStateConfiguration esc = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); DumpEntityStateConfig(esc); } public static void DumpAddressableEntityStateConfig(string addressablePath) { //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) EntityStateConfiguration esc = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)addressablePath).WaitForCompletion(); DumpEntityStateConfig(esc); } public static Object GetEntityStateFieldObject(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetEntityStateFieldString(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static bool SetEntityStateField(string entityStateName, string fieldName, Object newObject) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static bool SetEntityStateField(string entityStateName, string fieldName, string value) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } public static bool SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, string value) { //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) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } public static bool SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, Object newObject) { //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) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static Object GetAddressableEntityStateFieldObject(string fullEntityStatePath, string fieldName) { //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) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetAddressableEntityStateFieldString(string fullEntityStatePath, string fieldName) { //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) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static string FloatToString(float f) { int num = Mathf.FloorToInt(f); int num2 = Mathf.FloorToInt((f - (float)num) * 100f); return num + "." + num2; } public static bool AddSkillToFamily(SkillFamily skillFamily, SkillDef skillDef) { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)skillDef)) { Debug.LogError((object)("SkillsReturns: Could not add " + skillDef.skillName + ": SkillDef is null.")); return false; } if ((Object)(object)skillFamily == (Object)null) { Debug.LogError((object)("SkillsReturns: Could not add " + skillDef.skillName + ": SkillFamily is null.")); return false; } 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, unlockableName = "" }; ((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val; return true; } } } namespace EntityStates.RiskyMod.Mage { public class SpecialLightning : BaseState { private bool rightMuzzle = true; public static float totalDamageCoefficient = 12f; public static GameObject gauntletEffectPrefab; public static GameObject gauntletMissEffectPrefab; public static float maxDistance = 40f; public static float bounceDistance = 20f; public static float baseEntryDuration = 0.6f; public static float baseAttackDuration = 3f; public static float procCoefficientPerTick = 1f; public static float baseTickFrequency = 5f; public static float force = 100f; public static int bounceCount = 1; public static string startAttackSoundString = "Play_mage_m2_shoot"; public static string endAttackSoundString = ""; public static float recoilForce = 0f; private static int baseTickCount = 20; private float tickFrequency; public int loadBaseTickCount; public float loadBaseTickFrequency; public float loadTotalDamageCoefficient; public float loadMaxDistance; public float loadBounceDistance; public float loadBounceCount; private float tickDamageCoefficient; public static GameObject laserEffectPrefab; private float flamethrowerStopwatch; private float stopwatch; private float entryDuration; private float flamethrowerDuration; private bool hasBegunAttack; private ChildLocator childLocator; private Transform leftMuzzleTransform; private Transform rightMuzzleTransform; private bool isCrit; private const float flamethrowerEffectBaseDistance = 16f; public virtual void LoadStats() { loadBaseTickCount = baseTickCount; loadBaseTickFrequency = baseTickFrequency; loadMaxDistance = maxDistance; loadBounceDistance = bounceDistance; loadTotalDamageCoefficient = totalDamageCoefficient; loadBounceCount = bounceCount; } public virtual void ModifyAttack(LightningOrb lo) { } public override void OnEnter() { ((BaseState)this).OnEnter(); stopwatch = 0f; LoadStats(); tickDamageCoefficient = loadTotalDamageCoefficient / (baseTickFrequency * baseAttackDuration); entryDuration = baseEntryDuration / base.attackSpeedStat; tickFrequency = loadBaseTickFrequency * base.attackSpeedStat; flamethrowerDuration = baseAttackDuration; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(entryDuration + flamethrowerDuration + 1f); } Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); leftMuzzleTransform = childLocator.FindChild("MuzzleLeft"); rightMuzzleTransform = childLocator.FindChild("MuzzleRight"); } isCrit = ((BaseState)this).RollCrit(); ((EntityState)this).PlayAnimation("Gesture, Additive", "PrepFlamethrower", "Flamethrower.playbackRate", entryDuration, 0f); } public override void OnExit() { Util.PlaySound(endAttackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayCrossfade("Gesture, Additive", "ExitFlamethrower", 0.1f); ((EntityState)this).OnExit(); } private void FireGauntlet(string muzzleString) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: 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_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0126: 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_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_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Expected O, but got Unknown //IL_0156: 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_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0189: 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_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_0067: 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_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { string text = (rightMuzzle ? "MuzzleRight" : "MuzzleLeft"); Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 origin = ((Ray)(ref aimRay)).origin; if (Object.op_Implicit((Object)(object)leftMuzzleTransform) && Object.op_Implicit((Object)(object)rightMuzzleTransform)) { origin = ((!rightMuzzle) ? leftMuzzleTransform.position : rightMuzzleTransform.position); rightMuzzle = !rightMuzzle; } List<HealthComponent> bouncedObjects = new List<HealthComponent>(); LightningOrb val = new LightningOrb { bouncedObjects = bouncedObjects, attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, damageValue = base.damageStat * tickDamageCoefficient, procCoefficient = procCoefficientPerTick, teamIndex = ((BaseState)this).GetTeam(), isCrit = isCrit, procChainMask = default(ProcChainMask), lightningType = (LightningType)8, damageColorIndex = (DamageColorIndex)0, bouncesRemaining = 1, targetsToFindPerBounce = 6, range = loadBounceDistance, origin = origin, damageType = DamageTypeCombo.op_Implicit((DamageType)0), speed = 120f }; ModifyAttack(val); BullseyeSearch val2 = new BullseyeSearch(); val2.teamMaskFilter = TeamMask.allButNeutral; ((TeamMask)(ref val2.teamMaskFilter)).RemoveTeam(((EntityState)this).characterBody.teamComponent.teamIndex); val2.filterByLoS = false; val2.searchOrigin = ((Ray)(ref aimRay)).origin - ((Ray)(ref aimRay)).direction; val2.sortMode = (SortMode)2; val2.maxDistanceFilter = loadMaxDistance + 1f; val2.maxAngleFilter = (((EntityState)this).isAuthority ? 45f : 90f); val2.searchDirection = ((Ray)(ref aimRay)).direction; val2.RefreshCandidates(); GameObject val3 = gauntletMissEffectPrefab; HurtBox val4 = val2.GetResults().FirstOrDefault(); if (Object.op_Implicit((Object)(object)val4)) { val.bouncedObjects.Add(val4.healthComponent); ((Orb)val).target = val4; OrbManager.instance.AddOrb((Orb)(object)val); val3 = gauntletEffectPrefab; } else { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, damage = tickDamageCoefficient * base.damageStat, force = force, tracerEffectPrefab = laserEffectPrefab, muzzleName = text, hitEffectPrefab = null, isCrit = isCrit, radius = 1f, smartCollision = false, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, maxDistance = maxDistance - 5f }.Fire(); } EffectManager.SimpleMuzzleFlash(val3, ((EntityState)this).gameObject, text, true); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= entryDuration && !hasBegunAttack) { hasBegunAttack = true; Util.PlaySound(startAttackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Additive", "Flamethrower", "Flamethrower.playbackRate", flamethrowerDuration, 0f); FireGauntlet("MuzzleCenter"); } if (hasBegunAttack) { flamethrowerStopwatch += Time.deltaTime; if (flamethrowerStopwatch > 1f / tickFrequency) { flamethrowerStopwatch -= 1f / tickFrequency; FireGauntlet("MuzzleCenter"); } } if (((EntityState)this).fixedAge > baseEntryDuration + baseAttackDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class SpecialLightningScepter : SpecialLightning { public override void LoadStats() { base.LoadStats(); loadMaxDistance = 60f; loadBounceDistance = 30f; loadTotalDamageCoefficient = 32f; loadBounceCount = 2f; } } } namespace EntityStates.RiskyMod.Mage.Weapon { public class PrepFireStorm : BaseState { public static float baseDuration = 0.5f; public static float damageCoefficient = 21.6f; public static GameObject areaIndicatorPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion(); public static GameObject muzzleflashEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Mage/MuzzleflashMageFireLarge.prefab").WaitForCompletion(); public static GameObject crosshairOverridePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/SimpleDotCrosshair.prefab").WaitForCompletion(); public static string PrepIonSurgeSoundString = "Play_mage_m1_shoot"; public static float maxDistance = 600f; public static string fireSoundString = "Play_mage_R_end"; public static GameObject projectilePrefab; public static GameObject blastEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniExplosionVFX.prefab").WaitForCompletion(); public static float blastRadius = 8f; public static float blastJumpRadius = 14f; public static float blastForce = 4000f; private float duration; private float stopwatch; private GameObject areaIndicatorInstance; private OverrideRequest crosshairOverrideRequest; public override void OnEnter() { //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).characterBody.SetAimTimer(duration + 2f); crosshairOverrideRequest = CrosshairUtils.RequestOverrideForBody(((EntityState)this).characterBody, crosshairOverridePrefab, (OverridePriority)1); ((EntityState)this).PlayAnimation("Gesture, Additive", "PrepIonSurge", "PrepIonSurge.playbackRate", duration, 0f); Util.PlaySound(PrepIonSurgeSoundString, ((EntityState)this).gameObject); areaIndicatorInstance = Object.Instantiate<GameObject>(areaIndicatorPrefab); if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { areaIndicatorInstance.transform.localScale = blastRadius * Vector3.one; } UpdateAreaIndicator(); } public override void Update() { ((EntityState)this).Update(); UpdateAreaIndicator(); } private void UpdateAreaIndicator() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 val = ((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * maxDistance; RaycastHit val2 = default(RaycastHit); if (Util.CharacterRaycast(((EntityState)this).gameObject, aimRay, ref val2, maxDistance, CommonMasks.bullet, (QueryTriggerInteraction)0)) { val = ((RaycastHit)(ref val2)).point; } areaIndicatorInstance.transform.SetPositionAndRotation(val, Quaternion.identity); areaIndicatorInstance.transform.localScale = blastRadius * Vector3.one; } } private void OnPreRenderSceneCam(SceneCamera sceneCam) { if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { ((Component)areaIndicatorInstance.transform).gameObject.layer = (((Object)(object)sceneCam.cameraRigController.target == (Object)(object)((EntityState)this).gameObject) ? LayerIndex.defaultLayer.intVal : LayerIndex.noDraw.intVal); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (!((EntityState)this).inputBank.skill3.down && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) if (!((EntityState)this).outer.destroying) { ((EntityState)this).PlayAnimation("Gesture, Additive", "FireWall"); Util.PlaySound(fireSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(muzzleflashEffect, ((EntityState)this).gameObject, "MuzzleLeft", true); EffectManager.SimpleMuzzleFlash(muzzleflashEffect, ((EntityState)this).gameObject, "MuzzleRight", true); } EntityState.Destroy((Object)(object)areaIndicatorInstance.gameObject); OverrideRequest val = crosshairOverrideRequest; if (val != null) { val.Dispose(); } if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 position = ((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * maxDistance; RaycastHit val2 = default(RaycastHit); if (Util.CharacterRaycast(((EntityState)this).gameObject, aimRay, ref val2, maxDistance, CommonMasks.bullet, (QueryTriggerInteraction)0)) { position = ((RaycastHit)(ref val2)).point; } if (MageCore.utilitySelfKnockback.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded) { ApplySelfKnockback(); } ProjectileManager instance = ProjectileManager.instance; FireProjectileInfo val3 = new FireProjectileInfo { damage = base.damageStat * damageCoefficient, crit = ((BaseState)this).RollCrit(), damageColorIndex = (DamageColorIndex)0, position = position, procChainMask = default(ProcChainMask), force = 0f, owner = ((EntityState)this).gameObject, projectilePrefab = projectilePrefab, rotation = Quaternion.identity }; ((FireProjectileInfo)(ref val3)).speedOverride = 0f; val3.target = null; instance.FireProjectile(val3); } ((EntityState)this).OnExit(); } public void ApplySelfKnockback() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_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: 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_0067: 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_0077: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine val = EntityStateMachine.FindByCustomName(((EntityState)this).gameObject, "Jet"); if (!Object.op_Implicit((Object)(object)val) || !(((object)val.state).GetType() == typeof(JetpackOn))) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 val2 = -1f * ((Ray)(ref aimRay)).direction * blastForce; ((EntityState)this).characterMotor.velocity = Vector3.zero; ((EntityState)this).characterMotor.ApplyForce(val2, true, false); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } } public class PrepIceWall : BaseState { public static float baseDuration = 0.5f; public static GameObject areaIndicatorPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/FirewallAreaIndicator.prefab").WaitForCompletion(); public static GameObject areaIndicatorCirclePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion(); public static GameObject projectilePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageIcewallWalkerProjectile.prefab").WaitForCompletion(); public static float damageCoefficient = 1f; public static GameObject muzzleflashEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageIceLarge.prefab").WaitForCompletion(); public static GameObject goodCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/SimpleDotCrosshair.prefab").WaitForCompletion(); public static GameObject badCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/UI/SimpleDotCrosshair.prefab").WaitForCompletion(); public static string PrepIceWallSoundString = "Play_mage_shift_start"; public static float maxDistance = 600f; public static string fireSoundString = "Play_mage_shift_stop"; public static float maxSlopeAngle = 70f; public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageIceExplosion.prefab").WaitForCompletion(); public static GameObject blastEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXFrozen.prefab").WaitForCompletion(); public static float blastRadius = 6f; public static float blastJumpRadius = 14f; public static float blastForce = 4000f; private float duration; private float stopwatch; private bool goodPlacement; private GameObject areaIndicatorInstance; private GameObject areaIndicatorCircleInstance; private OverrideRequest crosshairOverrideRequest; public override void OnEnter() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).characterBody.SetAimTimer(duration + 2f); ((EntityState)this).PlayAnimation("Gesture, Additive", "PrepIceWall", "PrepIceWall.playbackRate", duration, 0f); Util.PlaySound(PrepIceWallSoundString, ((EntityState)this).gameObject); areaIndicatorInstance = Object.Instantiate<GameObject>(areaIndicatorPrefab); areaIndicatorCircleInstance = Object.Instantiate<GameObject>(areaIndicatorCirclePrefab); if (Object.op_Implicit((Object)(object)areaIndicatorCircleInstance)) { areaIndicatorCircleInstance.transform.localScale = blastRadius * Vector3.one; } UpdateAreaIndicator(); } private void UpdateAreaIndicator() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0043: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: 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_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) bool flag = goodPlacement; goodPlacement = false; areaIndicatorInstance.SetActive(true); if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { float num = maxDistance; float num2 = 0f; Ray aimRay = ((BaseState)this).GetAimRay(); RaycastHit val = default(RaycastHit); if (Physics.Raycast(CameraRigController.ModifyAimRayIfApplicable(aimRay, ((EntityState)this).gameObject, ref num2), ref val, num + num2, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { areaIndicatorInstance.transform.position = ((RaycastHit)(ref val)).point; areaIndicatorInstance.transform.up = ((RaycastHit)(ref val)).normal; areaIndicatorInstance.transform.forward = -((Ray)(ref aimRay)).direction; goodPlacement = Vector3.Angle(Vector3.up, ((RaycastHit)(ref val)).normal) < maxSlopeAngle; } if (flag != goodPlacement || crosshairOverrideRequest == null) { OverrideRequest val2 = crosshairOverrideRequest; if (val2 != null) { val2.Dispose(); } GameObject val3 = (goodPlacement ? goodCrosshairPrefab : badCrosshairPrefab); crosshairOverrideRequest = CrosshairUtils.RequestOverrideForBody(((EntityState)this).characterBody, val3, (OverridePriority)1); } } if (Object.op_Implicit((Object)(object)areaIndicatorCircleInstance)) { Ray aimRay2 = ((BaseState)this).GetAimRay(); Vector3 val4 = ((Ray)(ref aimRay2)).origin + ((Ray)(ref aimRay2)).direction * maxDistance; RaycastHit val5 = default(RaycastHit); if (Util.CharacterRaycast(((EntityState)this).gameObject, aimRay2, ref val5, maxDistance, CommonMasks.bullet, (QueryTriggerInteraction)0)) { val4 = ((RaycastHit)(ref val5)).point; } areaIndicatorCircleInstance.transform.SetPositionAndRotation(val4, Quaternion.identity); areaIndicatorCircleInstance.transform.localScale = blastRadius * Vector3.one; } areaIndicatorInstance.SetActive(goodPlacement); areaIndicatorCircleInstance.SetActive(!goodPlacement); } public override void Update() { ((EntityState)this).Update(); UpdateAreaIndicator(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (!((EntityState)this).inputBank.skill3.down && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0156: 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) if (!((EntityState)this).outer.destroying) { ((EntityState)this).PlayAnimation("Gesture, Additive", "FireWall"); Util.PlaySound(fireSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(muzzleflashEffect, ((EntityState)this).gameObject, "MuzzleLeft", true); EffectManager.SimpleMuzzleFlash(muzzleflashEffect, ((EntityState)this).gameObject, "MuzzleRight", true); if (goodPlacement && Object.op_Implicit((Object)(object)areaIndicatorInstance) && ((EntityState)this).isAuthority) { Vector3 forward = areaIndicatorInstance.transform.forward; forward.y = 0f; ((Vector3)(ref forward)).Normalize(); Vector3 val = Vector3.Cross(Vector3.up, forward); bool flag = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master); ProjectileManager.instance.FireProjectile(projectilePrefab, areaIndicatorInstance.transform.position + Vector3.up, Util.QuaternionSafeLookRotation(val), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, flag, (DamageColorIndex)0, (GameObject)null, -1f); ProjectileManager.instance.FireProjectile(projectilePrefab, areaIndicatorInstance.transform.position + Vector3.up, Util.QuaternionSafeLookRotation(-val), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, flag, (DamageColorIndex)0, (GameObject)null, -1f); } } EntityState.Destroy((Object)(object)areaIndicatorInstance.gameObject); EntityState.Destroy((Object)(object)areaIndicatorCircleInstance.gameObject); OverrideRequest val2 = crosshairOverrideRequest; if (val2 != null) { val2.Dispose(); } if (((EntityState)this).isAuthority) { FireBlast(); if (MageCore.utilitySelfKnockback.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded) { ApplySelfKnockback(); } } ((EntityState)this).OnExit(); } public void ApplySelfKnockback() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_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: 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_0067: 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_0077: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine val = EntityStateMachine.FindByCustomName(((EntityState)this).gameObject, "Jet"); if (!Object.op_Implicit((Object)(object)val) || !(((object)val.state).GetType() == typeof(JetpackOn))) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 val2 = -1f * ((Ray)(ref aimRay)).direction * blastForce; ((EntityState)this).characterMotor.velocity = Vector3.zero; ((EntityState)this).characterMotor.ApplyForce(val2, true, false); } } public void FireBlast() { //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_000a: 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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0107: 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_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Expected O, but got Unknown //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 val = ((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * maxDistance; RaycastHit val2 = default(RaycastHit); if (Util.CharacterRaycast(((EntityState)this).gameObject, aimRay, ref val2, maxDistance, CommonMasks.bullet, (QueryTriggerInteraction)0)) { val = ((RaycastHit)(ref val2)).point; } EffectData val3 = new EffectData(); val3.rotation = Util.QuaternionSafeLookRotation(Vector3.up); val3.origin = val; val3.scale = blastRadius; EffectManager.SpawnEffect(blastEffectPrefab, val3, true); BlastAttack val4 = new BlastAttack { radius = blastRadius, procCoefficient = 1f, position = val, attacker = ((EntityState)this).gameObject, crit = Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master), baseDamage = ((EntityState)this).characterBody.damage * damageCoefficient, falloffModel = (FalloffModel)0, baseForce = 0f, teamIndex = ((BaseState)this).GetTeam(), damageType = DamageTypeCombo.op_Implicit((DamageType)256), attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(hitEffectPrefab) }; val4.Fire(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } } } namespace EntityStates.RiskyMod.Loader { public class GroundSlamScaled : BaseCharacterMain { public static float airControl = 0.2f; public static float minimumDuration = 0.1f; public static float blastRadius = 10f; public static float blastProcCoefficient = 1f; public static float blastDamageCoefficient = 20f; public static string enterSoundString = "Play_loader_R_variant_whooshDown"; public static float initialVerticalVelocity = -20f; public static float exitVerticalVelocity = 12f; public static float verticalAcceleration = -100f; public static float exitSlowdownCoefficient = 0.2f; public static GameObject blastImpactEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/omniimpactvfxloaderlightning"); public static GameObject blastEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/loadergroundslam"); public static GameObject fistEffectPrefab; public static float maxDamageBoost = 2f; public static float maxRadiusBoost = 2f; public static float maxForceBoost = 2f; public static float maxBoostDistance = 100f; private float initialY; private float previousAirControl; private GameObject leftFistEffectInstance; private GameObject rightFistEffectInstance; private bool detonateNextFrame; public override void OnEnter() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_00d6: Unknown result type (might be due to invalid IL or missing references) ((BaseCharacterMain)this).OnEnter(); ((EntityState)this).PlayCrossfade("Body", "GroundSlam", 0.2f); if (((EntityState)this).isAuthority) { ((EntityState)this).characterMotor.onMovementHit += new MovementHitDelegate(OnMovementHit); ((EntityState)this).characterMotor.velocity.y = initialVerticalVelocity; } Util.PlaySound(enterSoundString, ((EntityState)this).gameObject); previousAirControl = ((EntityState)this).characterMotor.airControl; ((EntityState)this).characterMotor.airControl = airControl; leftFistEffectInstance = Object.Instantiate<GameObject>(fistEffectPrefab, ((BaseState)this).FindModelChild("MechHandR")); rightFistEffectInstance = Object.Instantiate<GameObject>(fistEffectPrefab, ((BaseState)this).FindModelChild("MechHandL")); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { initialY = ((EntityState)this).characterBody.footPosition.y; } } public override void FixedUpdate() { //IL_0032: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) ((BaseCharacterMain)this).FixedUpdate(); if (!((EntityState)this).isAuthority || !Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { return; } ((EntityState)this).characterMotor.moveDirection = ((EntityState)this).inputBank.moveVector; ((EntityState)this).characterDirection.moveVector = ((EntityState)this).characterMotor.moveDirection; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity.y = characterMotor.velocity.y + verticalAcceleration * Time.fixedDeltaTime; if (((EntityState)this).fixedAge >= minimumDuration && (detonateNextFrame || ((BaseCharacterController)((EntityState)this).characterMotor).Motor.GroundingStatus.IsStableOnGround)) { Result val = DetonateAuthority(); if (val.hitCount > 0 && Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { ((EntityState)this).healthComponent.AddBarrierAuthority(LoaderMeleeAttack.barrierPercentagePerHit * ((EntityState)this).healthComponent.fullBarrier); } ((EntityState)this).outer.SetNextStateToMain(); } if (!detonateNextFrame && !((BaseCharacterController)((EntityState)this).characterMotor).Motor.GroundingStatus.IsStableOnGround && ((EntityState)this).fixedAge >= minimumDuration && global::SneedUtils.SneedUtils.IsEnemyInSphere(5f, ((EntityState)this).characterBody.footPosition, ((BaseState)this).GetTeam())) { detonateNextFrame = true; } } public override void OnExit() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { ((EntityState)this).characterMotor.onMovementHit -= new MovementHitDelegate(OnMovementHit); ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity *= exitSlowdownCoefficient; ((EntityState)this).characterMotor.velocity.y = exitVerticalVelocity; } ((EntityState)this).characterMotor.airControl = previousAirControl; EntityState.Destroy((Object)(object)leftFistEffectInstance); EntityState.Destroy((Object)(object)rightFistEffectInstance); ((BaseCharacterMain)this).OnExit(); } private void OnMovementHit(ref MovementHitInfo movementHitInfo) { detonateNextFrame = true; } public Result DetonateAuthority() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_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_0018: 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_0030: Expected O, but got Unknown //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_0092: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) Vector3 footPosition = ((EntityState)this).characterBody.footPosition; EffectManager.SpawnEffect(blastEffectPrefab, new EffectData { origin = footPosition, scale = blastRadius }, true); BlastAttack val = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * blastDamageCoefficient, baseForce = 1200f, bonusForce = new Vector3(0f, 3000f, 0f), crit = ((BaseState)this).RollCrit(), damageType = DamageTypeCombo.op_Implicit((DamageType)32), falloffModel = (FalloffModel)0, procCoefficient = blastProcCoefficient, radius = blastRadius, position = footPosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(blastImpactEffectPrefab), teamIndex = ((EntityState)this).teamComponent.teamIndex }; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { float num = (initialY - ((EntityState)this).characterBody.footPosition.y) / maxBoostDistance; float num2 = Mathf.Lerp(1f, maxDamageBoost, num); float num3 = Mathf.Lerp(1f, maxRadiusBoost, num); val.baseDamage *= num2; val.radius *= num3; } DamageAPI.AddModdedDamageType(val, SharedDamageTypes.AntiFlyingForce); return val.Fire(); } } public class PreGroundSlamScaled : BaseCharacterMain { public static float baseDuration = 0.4f; public static string enterSoundString = "Play_loader_R_variant_activate"; public static float upwardVelocity = 12f; private float duration; public override void OnEnter() { ((BaseCharacterMain)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "PreGroundSlam", "GroundSlam.playbackRate", duration, 0f); Util.PlaySound(enterSoundString, ((EntityState)this).gameObject); ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; ((EntityState)this).characterMotor.velocity.y = upwardVelocity; } public override void FixedUpdate() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) ((BaseCharacterMain)this).FixedUpdate(); ((EntityState)this).characterMotor.moveDirection = ((EntityState)this).inputBank.moveVector; if (((EntityState)this).fixedAge > duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new GroundSlamScaled()); } } } } namespace EntityStates.RiskyMod.Huntress { public class ArrowRainScepter : BaseArrowBarrage { public static float arrowRainRadius = 11.25f; public static float damageCoefficient = 4.2f; public static GameObject projectilePrefab; public static GameObject areaIndicatorPrefab; public static GameObject muzzleFlashEffect; private GameObject areaIndicatorInstance; private bool shouldFireArrowRain; private void LoadStats() { base.maxDuration = 1.5f; base.beginLoopSoundString = "Play_huntress_R_aim_loop"; base.endLoopSoundString = "Stop_huntress_R_aim_loop"; base.fireSoundString = "Play_huntress_R_rain_start"; } public override void OnEnter() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) LoadStats(); ((BaseArrowBarrage)this).OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "LoopArrowRain"); if (Object.op_Implicit((Object)(object)areaIndicatorPrefab)) { areaIndicatorInstance = Object.Instantiate<GameObject>(areaIndicatorPrefab); areaIndicatorInstance.transform.localScale = new Vector3(arrowRainRadius, arrowRainRadius, arrowRainRadius); } } private void UpdateAreaIndicator() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { float num = 1000f; RaycastHit val = default(RaycastHit); if (Physics.Raycast(((BaseState)this).GetAimRay(), ref val, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { areaIndicatorInstance.transform.position = ((RaycastHit)(ref val)).point; areaIndicatorInstance.transform.up = ((RaycastHit)(ref val)).normal; } } } public override void Update() { ((EntityState)this).Update(); UpdateAreaIndicator(); } public override void HandlePrimaryAttack() { ((BaseArrowBarrage)this).HandlePrimaryAttack(); shouldFireArrowRain = true; ((EntityState)this).outer.SetNextStateToMain(); } public void DoFireArrowRain() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) EffectManager.SimpleMuzzleFlash(muzzleFlashEffect, ((EntityState)this).gameObject, "Muzzle", false); if (Object.op_Implicit((Object)(object)areaIndicatorInstance) && shouldFireArrowRain) { ProjectileManager.instance.FireProjectile(projectilePrefab, areaIndicatorInstance.transform.position, areaIndicatorInstance.transform.rotation, ((EntityState)this).gameObject, ((BaseState)this).damageStat * damageCoefficient, 0f, Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } public override void OnExit() { if (shouldFireArrowRain && !((EntityState)this).outer.destroying) { DoFireArrowRain(); } if (Object.op_Implicit((Object)(object)areaIndicatorInstance)) { EntityState.Destroy((Object)(object)areaIndicatorInstance.gameObject); } ((BaseArrowBarrage)this).OnExit(); } } public class BeginArrowRainScepter : BaseBeginArrowBarrage { private void LoadStats() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) base.basePrepDuration = 0.25f; base.blinkDuration = 0.3f; base.jumpCoefficient = 3f; base.blinkVector = Vector3.up; } public override void OnEnter() { LoadStats(); ((BaseBeginArrowBarrage)this).OnEnter(); } public override EntityState InstantiateNextState() { return (EntityState)(object)new ArrowRainScepter(); } } } namespace EntityStates.RiskyMod.Croco { public class FireDiseaseProjectileScepter : BaseState { public static GameObject projectilePrefab; public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashcroco"); public static float baseDuration = 0.5f; public static float damageCoefficient = 1f; public static float force = 0f; public static string attackString = "Play_acrid_R_shoot"; public static float recoilAmplitude = 2f; public static float bloom = 1f; private float duration; public override void OnEnter() { //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_00e4: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: 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_018f: 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) ((BaseState)this).OnEnter(); Ray aimRay = ((BaseState)this).GetAimRay(); duration = baseDuration / base.attackSpeedStat; ((BaseState)this).StartAimMode(duration + 2f, false); ((EntityState)this).PlayAnimation("Gesture, Mouth", "FireSpit", "FireSpit.playbackRate", duration, 0f); Util.PlaySound(attackString, ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-1f * recoilAmplitude, -1.5f * recoilAmplitude, -0.25f * recoilAmplitude, 0.25f * recoilAmplitude); ((EntityState)this).characterBody.AddSpreadBloom(bloom); string text = "MouthMuzzle"; if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false); } if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = projectilePrefab; val.position = ((Ray)(ref aimRay)).origin; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = base.damageStat * damageCoefficient; val.force = force; val.crit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master); CrocoDamageTypeController component = ((EntityState)this).GetComponent<CrocoDamageTypeController>(); if (Object.op_Implicit((Object)(object)component)) { val.damageTypeOverride = component.GetDamageType(); } ProjectileManager.instance.FireProjectile(val); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } } namespace EntityStates.RiskyMod.Commando { public class FireLightningRound : GenericProjectileBaseState { public static GameObject lightningMuzzleflashEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(); public static GameObject lightningProjectilePrefab; private static int FireFMJStateHash = Animator.StringToHash("FireFMJ"); private static int FireFMJParamHash = Animator.StringToHash("FireFMJ.playbackRate"); public override void OnEnter() { base.effectPrefab = lightningMuzzleflashEffect; base.projectilePrefab = lightningProjectilePrefab; base.force = 2000f; base.damageCoefficient = 4.5f; base.baseDuration = 0.5f; base.minSpread = 0f; base.maxSpread = 0f; base.recoilAmplitude = 1.5f; base.attackSoundString = "Play_commando_M2"; base.projectilePitchBonus = 0f; base.baseDelayBeforeFiringProjectile = 0f; base.recoilAmplitude = 1.5f; base.bloom = -1f; base.targetMuzzle = "MuzzleCenter"; ((GenericProjectileBaseState)this).OnEnter(); } public override void PlayAnimation(float duration) { ((GenericProjectileBaseState)this).PlayAnimation(duration); if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Additive", FireFMJStateHash, FireFMJParamHash, duration); ((EntityState)this).PlayAnimation("Gesture, Override", FireFMJStateHash, FireFMJParamHash, duration); } } public override Ray ModifyProjectileAimRay(Ray aimRay) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) TrajectoryAimAssist.ApplyTrajectoryAimAssist(ref aimRay, base.projectilePrefab, ((EntityState)this).gameObject, 1f); return aimRay; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class ShrapnelBarrage : BaseState { private bool triggeredExplosion = false; public float internalBaseBulletCount; public float internalBaseDurationBetweenShots; public static GameObject explosionEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OmniEffect/OmniExplosionVFXQuick"); public static float blastRadius = 3f; public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/MuzzleflashBarrage"); public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/HitsparkCommandoBarrage"); public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/TracerCommandoBoost"); public static float force = 100f; public static float minSpread = 0f; public static float maxSpread = 1f; public static float baseDurationBetweenShots = 0.12f; public static float totalDuration = 1f; public static float bulletRadius = 0.5f; public static int baseBulletCount = 6; public static string fireBarrageSoundString = "Play_commando_m1"; public static float recoilAmplitude = 1.5f; public static float spreadBloomValue = 0.15f; public static string muzzleName = "MuzzleRight"; private int totalBulletsFired; private int bulletCount; public float stopwatchBetweenShots; private Animator modelAnimator; private Transform modelTransform; private float duration; private float durationBetweenShots; private float maxAttackSpeed; protected virtual float DamageCoefficient => 1.2f; public virtual void LoadStats() { internalBaseBulletCount = baseBulletCount; internalBaseDurationBetweenShots = baseDurationBetweenShots; } public override void OnEnter() { ((BaseState)this).OnEnter(); LoadStats(); ((EntityState)this).characterBody.SetSpreadBloom(0.2f, false); duration = totalDuration; durationBetweenShots = internalBaseDurationBetweenShots / base.attackSpeedStat; bulletCount = (int)(internalBaseBulletCount * base.attackSpeedStat); maxAttackSpeed = base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).PlayCrossfade("Gesture, Additive", "FireBarrage", "FireBarrage.playbackRate", duration, 0.2f); ((EntityState)this).PlayCrossfade("Gesture, Override", "FireBarrage", "FireBarrage.playbackRate", duration, 0.2f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } FireBullet(); } private void FireBullet() { //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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Expected O, but go