Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of PlayableDevastator v1.1.0
PlayableDevastator.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.GravekeeperBoss; using EntityStates.VoidMegaCrab.BackWeapon; using EntityStates.VoidMegaCrab.Weapon; using KinematicCharacterController; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Dragonyck")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("PlayableDevastator")] [assembly: AssemblyTitle("PlayableDevastator")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace PlayableDevastator; internal class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PlayableDevastator.devastatorassets")) { MainAssetBundle = AssetBundle.LoadFromStream(stream); } } } } internal class FixStupidCollider : MonoBehaviour { private void OnEnable() { CapsuleCollider component = ((Component)this).GetComponent<CapsuleCollider>(); component.radius = 2f; component.height = 3f; } } internal class DisplayController : MonoBehaviour { private void OnEnable() { //IL_0016: 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) ((Component)this).transform.localPosition = new Vector3(0f, 1.5f, 0f); ((Component)this).transform.localRotation = Quaternion.Euler(0f, 345f, 0f); } } internal class Hook { internal static void Hooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); Run.onRunStartGlobal += Run_onRunStartGlobal; } private static void Run_onRunStartGlobal(Run obj) { bool flag = false; foreach (NetworkUser readOnlyInstances in NetworkUser.readOnlyInstancesList) { if (Object.op_Implicit((Object)(object)readOnlyInstances) && Object.op_Implicit((Object)(object)readOnlyInstances.master) && Object.op_Implicit((Object)(object)readOnlyInstances.master.bodyPrefab) && ((Object)readOnlyInstances.master.bodyPrefab).name.Contains("「V??oid Devastator』")) { flag = true; } } if (flag && MainPlugin.openCrabRave.Value) { Application.OpenURL("https://www.youtube.com/watch?v=LDU_Txk06tM"); } } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0057: 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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00d5: 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_00e9: 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_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: 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_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) CharacterBody val = null; if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { val = damageInfo.attacker.GetComponent<CharacterBody>(); } if (Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(Prefabs.shieldBuff) && Object.op_Implicit((Object)(object)val) && NetworkServer.active) { DamageInfo val2 = new DamageInfo { attacker = ((Component)self.body).gameObject, inflictor = ((Component)self.body).gameObject, damage = damageInfo.damage * 2f, procCoefficient = 0f, damageType = (DamageType)0, damageColorIndex = (DamageColorIndex)9, position = self.body.corePosition, rejected = false }; val.healthComponent.TakeDamage(val2); EffectManager.SimpleEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidBarnacle/VoidBarnacleImpactExplosion.prefab").WaitForCompletion(), self.body.corePosition, Quaternion.identity, true); } if (Object.op_Implicit((Object)(object)damageInfo.attacker) && ((Object)damageInfo.attacker).name.Contains("「V??oid Devastator』Body") && ((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)19)) { DotDef dotDef = DotController.GetDotDef((DotIndex)8); DotController.InflictDot(((Component)self.body).gameObject, damageInfo.attacker, (DotIndex)8, dotDef.interval, 1f, (uint?)null); } if (Object.op_Implicit((Object)(object)self.body) && DamageAPI.HasModdedDamageType(damageInfo, Prefabs.collapse) && NetworkServer.active) { DotDef dotDef2 = DotController.GetDotDef((DotIndex)8); DotController.InflictDot(((Component)self.body).gameObject, damageInfo.attacker, (DotIndex)8, dotDef2.interval, 1f, (uint?)null); DotController.InflictDot(((Component)self.body).gameObject, damageInfo.attacker, (DotIndex)8, dotDef2.interval, 1f, (uint?)null); } if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)self.body) && NetworkServer.active) { if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.missile)) { bool alive = self.alive; float num = 5f; Vector3 position = damageInfo.position; Vector3 val3 = self.body.corePosition - position; float magnitude = ((Vector3)(ref val3)).magnitude; Quaternion val4 = ((magnitude != 0f) ? Util.QuaternionSafeLookRotation(val3) : Random.rotationUniform); float num2 = 0.5f; float num3 = Util.OnHitProcDamage(damageInfo.damage, val.damage, num2); ProjectileManager.instance.FireProjectile(Prefabs.missileStuckProjectile, position, val4, damageInfo.attacker, num3, 100f, damageInfo.crit, (DamageColorIndex)3, (GameObject)null, alive ? (magnitude * num) : (-1f)); } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.missileScepter)) { bool alive2 = self.alive; float num4 = 5f; Vector3 position2 = damageInfo.position; Vector3 val5 = self.body.corePosition - position2; float magnitude2 = ((Vector3)(ref val5)).magnitude; Quaternion val6 = ((magnitude2 != 0f) ? Util.QuaternionSafeLookRotation(val5) : Random.rotationUniform); float num5 = 0.5f; float num6 = Util.OnHitProcDamage(damageInfo.damage, val.damage, num5); ProjectileManager.instance.FireProjectile(Prefabs.missileStuckProjectileScepter, position2, val6, damageInfo.attacker, num6, 100f, damageInfo.crit, (DamageColorIndex)3, (GameObject)null, alive2 ? (magnitude2 * num4) : (-1f)); } } orig.Invoke(self, damageInfo); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Dragonyck.PlayableDevastator", "PlayableDevastator", "1.1.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.PlayableDevastator"; public const string MODNAME = "PlayableDevastator"; public const string VERSION = "1.1.0"; public const string SURVIVORNAME = "「V??oid Devastator』"; public const string SURVIVORNAMEKEY = "DRAGONDEVASTATOR"; public static GameObject characterPrefab; public GameObject characterDisplay; public GameObject doppelganger; public static Color characterColor; protected internal static ConfigEntry<int> baseJumpCount; protected internal static ConfigEntry<float> mainRootSpeed; protected internal static ConfigEntry<float> baseMaxHealth; protected internal static ConfigEntry<float> levelMaxHealth; protected internal static ConfigEntry<float> baseRegen; protected internal static ConfigEntry<float> levelRegen; protected internal static ConfigEntry<float> baseMaxShield; protected internal static ConfigEntry<float> levelMaxShield; protected internal static ConfigEntry<float> baseMoveSpeed; protected internal static ConfigEntry<float> levelMoveSpeed; protected internal static ConfigEntry<float> baseAcceleration; protected internal static ConfigEntry<float> baseJumpPower; protected internal static ConfigEntry<float> levelJumpPower; protected internal static ConfigEntry<float> baseDamage; protected internal static ConfigEntry<float> levelDamage; protected internal static ConfigEntry<float> baseAttackSpeed; protected internal static ConfigEntry<float> levelAttackSpeed; protected internal static ConfigEntry<float> baseCrit; protected internal static ConfigEntry<float> levelCrit; protected internal static ConfigEntry<float> baseArmor; protected internal static ConfigEntry<float> levelArmor; protected internal static List<string> itemBlacklist = new List<string>(); protected internal static List<PickupIndex> tier1 = new List<PickupIndex>(); protected internal static List<PickupIndex> tier2 = new List<PickupIndex>(); protected internal static List<PickupIndex> tier3 = new List<PickupIndex>(); protected internal static ConfigEntry<bool> openCrabRave; protected internal static SkillDef scepterOverrideDef; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Expected O, but got Unknown //IL_0041: 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_0060: Expected O, but got Unknown //IL_0060: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_0094: Expected O, but got Unknown //IL_00a9: 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_00c8: Expected O, but got Unknown //IL_00c8: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_00fc: Expected O, but got Unknown //IL_0111: 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_0130: Expected O, but got Unknown //IL_0130: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Expected O, but got Unknown //IL_0164: Expected O, but got Unknown //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Expected O, but got Unknown //IL_0198: Expected O, but got Unknown //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Expected O, but got Unknown //IL_01cc: Expected O, but got Unknown //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Expected O, but got Unknown //IL_0200: Expected O, but got Unknown //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Expected O, but got Unknown //IL_0234: Expected O, but got Unknown //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Expected O, but got Unknown //IL_0268: Expected O, but got Unknown //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Expected O, but got Unknown //IL_029c: Expected O, but got Unknown //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Expected O, but got Unknown //IL_02d0: Expected O, but got Unknown //IL_02e5: 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) //IL_0304: Expected O, but got Unknown //IL_0304: Expected O, but got Unknown //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Expected O, but got Unknown //IL_0338: Expected O, but got Unknown //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Expected O, but got Unknown //IL_036c: Expected O, but got Unknown //IL_0381: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Expected O, but got Unknown //IL_03a0: Expected O, but got Unknown //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Expected O, but got Unknown //IL_03d4: Expected O, but got Unknown //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03fe: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Expected O, but got Unknown //IL_0408: Expected O, but got Unknown //IL_041d: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_043c: Expected O, but got Unknown //IL_043c: Expected O, but got Unknown //IL_0451: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Expected O, but got Unknown //IL_046c: Expected O, but got Unknown baseJumpCount = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("Base Jump Count", "Value"), 1, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); mainRootSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Main Root Speed", "Value"), 33f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseMaxHealth = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Max Health", "Value"), 160f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelMaxHealth = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Max Health", "Value"), 45f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseRegen = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Regen", "Value"), 1f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelRegen = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Regen", "Value"), 0.4f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseMaxShield = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Max Shield", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelMaxShield = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Max Shield", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Move Speed", "Value"), 6.5f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Move Speed", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseAcceleration = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Acceleration", "Value"), 110f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseJumpPower = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Jump Power", "Value"), 15f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelJumpPower = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Jump Power", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseDamage = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Damage", "Value"), 12f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelDamage = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Damage", "Value"), 2.4f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseAttackSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Attack Speed", "Value"), 1f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelAttackSpeed = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Attack Speed", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseCrit = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Crit", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelCrit = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Crit", "Value"), 0f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); baseArmor = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Base Armor", "Value"), 90f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); levelArmor = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Level Armor", "Value"), 1f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); openCrabRave = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Cursed Crab Rave", "Enable"), false, new ConfigDescription("Opens Crab Rave in the background", (AcceptableValueBase)null, Array.Empty<object>())); Assets.PopulateAssets(); CreatePrefab(); Prefabs.CreatePrefabs(); RegisterStates(); RegisterCharacter(); CreateDoppelganger(); Hook.Hooks(); if (ModCompat.AncientScepterEnabled) { ModCompat.AddScepterSupport(); } } private void RegisterStates() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) bool flag = false; ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<FirePrimary>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<AltUtility>(ref flag); ContentAddition.AddEntityState<Special>(ref flag); } internal void CreatePrefab() { //IL_0006: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_0301: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_0346: Unknown result type (might be due to invalid IL or missing references) characterPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/VoidMegaCrabBody.prefab").WaitForCompletion(), "「V??oid Devastator』Body", true); characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; CapsuleCollider component = characterPrefab.GetComponent<CapsuleCollider>(); component.radius = 2f; component.height = 5f; characterPrefab.GetComponent<KinematicCharacterMotor>().Capsule = component; characterPrefab.AddComponent<FixStupidCollider>(); CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "「V??oid Devastator』Body"; component2.baseNameToken = "「V??oid Devastator』"; component2.bodyFlags = (BodyFlags)1040; component2.mainRootSpeed = mainRootSpeed.Value; component2.baseMaxHealth = baseMaxHealth.Value; component2.levelMaxHealth = levelMaxHealth.Value; component2.baseRegen = baseRegen.Value; component2.levelRegen = levelRegen.Value; component2.baseMaxShield = baseMaxShield.Value; component2.levelMaxShield = levelMaxShield.Value; component2.baseMoveSpeed = baseMoveSpeed.Value; component2.levelMoveSpeed = levelMoveSpeed.Value; component2.baseAcceleration = baseAcceleration.Value; component2.baseJumpPower = baseJumpPower.Value; component2.levelJumpPower = levelJumpPower.Value; component2.baseDamage = baseDamage.Value; component2.levelDamage = levelDamage.Value; component2.baseAttackSpeed = baseAttackSpeed.Value; component2.levelAttackSpeed = levelAttackSpeed.Value; component2.baseCrit = baseCrit.Value; component2.levelCrit = levelCrit.Value; component2.baseArmor = baseArmor.Value; component2.levelArmor = levelArmor.Value; component2.baseJumpCount = baseJumpCount.Value; component2.hideCrosshair = false; characterColor = component2.bodyColor; component2.aimOriginTransform.localPosition = new Vector3(0f, 6f, 0f); HealthComponent component3 = characterPrefab.GetComponent<HealthComponent>(); component3.health = baseMaxHealth.Value; component3.shield = baseMaxShield.Value; component3.barrier = 0f; component3.magnetiCharge = 0f; component3.body = null; component3.dontShowHealthbar = false; component3.globalDeathEventChanceCoefficient = 1f; characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 14f; characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true; characterPrefab.GetComponent<CameraTargetParams>().cameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Common/ccpStandard.asset").WaitForCompletion(); ModelLocator component4 = characterPrefab.GetComponent<ModelLocator>(); component4.modelBaseTransform.localPosition = new Vector3(0f, -2.6f, 0f); GameObject gameObject = ((Component)component4.modelTransform).gameObject; gameObject.transform.localScale = Vector3.one * 0.3f; HurtBoxGroup component5 = gameObject.GetComponent<HurtBoxGroup>(); component5.mainHurtBox.collider = (Collider)(object)component; EntityStateMachine component6 = ((Component)component2).GetComponent<EntityStateMachine>(); component6.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); Utils.NewStateMachine<Idle>(characterPrefab, "Shield"); Utils.NewStateMachine<Idle>(characterPrefab, "Weapon"); NetworkStateMachine component7 = ((Component)component2).GetComponent<NetworkStateMachine>(); component7.stateMachines = characterPrefab.GetComponents<EntityStateMachine>(); SkillSetup(); ContentAddition.AddBody(characterPrefab); } private void SkillSetup() { GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>(); foreach (GenericSkill val in componentsInChildren) { if (val.skillFamily.variants[0].skillDef.activationStateMachineName != "WhiteCannon" && val.skillFamily.variants[0].skillDef.activationStateMachineName != "BlackCannon") { Object.DestroyImmediate((Object)(object)val); } } PassiveSetup(); PrimarySetup(); SecondarySetup(); UtilitySetup(); SpecialSetup(); } private void PassiveSetup() { SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONDEVASTATOR_PASSIVE_NAME", "Collapsing Star"); LanguageAPI.Add("DRAGONDEVASTATOR_PASSIVE_DESCRIPTION", "As a creature of the <style=cIsVoid>Void</style>, the Devastator dies spectacularly, creating a <style=cIsVoid>void rift</style> on death that <style=cDeath>executes</style> everything inside the bubble. Additionally, every time the Devastator would inflict one stack of <style=cIsDamage>collapse</style>, inflict another."); component.passiveSkill.enabled = true; component.passiveSkill.skillNameToken = "DRAGONDEVASTATOR_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "DRAGONDEVASTATOR_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("passive"); } private void PrimarySetup() { //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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00d2: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONDEVASTATOR_M1", "Scour"); LanguageAPI.Add("DRAGONDEVASTATOR_M1_DESCRIPTION", "Fire a spray of explosive minelets for <style=cIsDamage>85% damage</style>. They stick to terrain and can be detonated with Banish Charge, dealing it's full <style=cIsDamage>damage</style> in a small area."); SkillDef val = Object.Instantiate<SkillDef>(Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/VoidMegaCrab/FireCrabWhiteCannon.asset").WaitForCompletion()); val.activationState = new SerializableEntityStateType(typeof(Primary)); val.skillDescriptionToken = "DRAGONDEVASTATOR_M1_DESCRIPTION"; val.skillName = "DRAGONDEVASTATOR_M1"; val.skillNameToken = "DRAGONDEVASTATOR_M1"; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("m1"); ContentAddition.AddSkillDef(val); SkillFamily val2 = Object.Instantiate<SkillFamily>(component.primary.skillFamily); Variant[] variants = val2.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(val2); Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val2); } private void SecondarySetup() { //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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00d2: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONDEVASTATOR_M2", "Banish Charge"); LanguageAPI.Add("DRAGONDEVASTATOR_M2_DESCRIPTION", "Hurl an unstable void explosive for <style=cIsDamage>600% damage</style>."); SkillDef val = Object.Instantiate<SkillDef>(Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/VoidMegaCrab/FireCrabBlackCannon.asset").WaitForCompletion()); val.activationState = new SerializableEntityStateType(typeof(Secondary)); val.skillDescriptionToken = "DRAGONDEVASTATOR_M2_DESCRIPTION"; val.skillName = "DRAGONDEVASTATOR_M2"; val.skillNameToken = "DRAGONDEVASTATOR_M2"; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("m2"); ContentAddition.AddSkillDef(val); SkillFamily val2 = Object.Instantiate<SkillFamily>(component.secondary.skillFamily); Variant[] variants = val2.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(val2); Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val2); } private void UtilitySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: 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_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONDEVASTATOR_UTIL", "Submerge"); LanguageAPI.Add("DRAGONDEVASTATOR_UTIL_DESCRIPTION", "Retreat into the void briefly, re-emerging a short distance away, influenced by directional input. An explosion is created on arrival around Devastator, <style=cIsDamage>stunning</style> and dealing <style=cIsDamage>280% damage</style>."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Utility)); val.activationStateMachineName = "Body"; val.baseMaxStock = 2; val.baseRechargeInterval = 4f; val.beginSkillCooldownOnSkillEnd = false; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = false; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("utility"); val.skillDescriptionToken = "DRAGONDEVASTATOR_UTIL_DESCRIPTION"; val.skillName = "DRAGONDEVASTATOR_UTIL"; val.skillNameToken = "DRAGONDEVASTATOR_UTIL"; ContentAddition.AddSkillDef(val); component.utility = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.utility, "_skillFamily", val2); SkillFamily skillFamily = component.utility.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); LanguageAPI.Add("DRAGONDEVASTATORALT_UTIL", "Abjure"); LanguageAPI.Add("DRAGONDEVASTATORALT_UTIL_DESCRIPTION", "Create a bubble of <style=cIsVoid>void energy</style>, negating <style=cIsDamage>projectiles</style> around the Devastator briefly. Any damage taken while the bubble is active is returned to the attacker and its <style=cIsDamage>damage</style> is doubled."); val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(AltUtility)); val.activationStateMachineName = "Shield"; val.baseMaxStock = 1; val.baseRechargeInterval = 8f; val.beginSkillCooldownOnSkillEnd = false; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = false; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("altutility"); val.skillDescriptionToken = "DRAGONDEVASTATORALT_UTIL_DESCRIPTION"; val.skillName = "DRAGONDEVASTATORALT_UTIL"; val.skillNameToken = "DRAGONDEVASTATORALT_UTIL"; ContentAddition.AddSkillDef(val); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants2 = skillFamily.variants; int num = skillFamily.variants.Length - 1; val3 = new Variant { skillDef = val, unlockableDef = null }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants2[num] = val3; } private void SpecialSetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: 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_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONDEVASTATOR_SPEC", "Annihilate"); LanguageAPI.Add("DRAGONDEVASTATOR_SPEC_DESCRIPTION", "Fire a burst of homing void spikes that deal <style=cIsDamage>34% damage</style> each and stick to hit surfaces, <style=cIsDamage>detonating</style> after a short duration for <style=cIsDamage>17% damage</style> and applies <style=cIsDamage>Collapse</style>."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Special)); val.activationStateMachineName = "BackWeapon"; val.baseMaxStock = 1; val.baseRechargeInterval = 8f; val.beginSkillCooldownOnSkillEnd = false; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("special"); val.skillDescriptionToken = "DRAGONDEVASTATOR_SPEC_DESCRIPTION"; val.skillName = "DRAGONDEVASTATOR_SPEC"; val.skillNameToken = "DRAGONDEVASTATOR_SPEC"; ContentAddition.AddSkillDef(val); component.special = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.special, "_skillFamily", val2); SkillFamily skillFamily = component.special.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); LanguageAPI.Add("DRAGONDEVASTATOR_SPEC_SCEPTER", "Unmaker Barrage"); LanguageAPI.Add("DRAGONDEVASTATOR_SPEC_DESCRIPTION_SCEPTER", "Fire a cluster of homing void spikes that burrow into enemies and terrain, that create a large explosion dealing <style=cIsDamage>17% damage</style> and applies <style=cIsDamage>Collapse</style>."); scepterOverrideDef = ScriptableObject.CreateInstance<SkillDef>(); scepterOverrideDef.activationState = new SerializableEntityStateType(typeof(SpecialScepter)); scepterOverrideDef.activationStateMachineName = "BackWeapon"; scepterOverrideDef.baseMaxStock = 1; scepterOverrideDef.baseRechargeInterval = 8f; scepterOverrideDef.beginSkillCooldownOnSkillEnd = false; scepterOverrideDef.canceledFromSprinting = false; scepterOverrideDef.fullRestockOnAssign = false; scepterOverrideDef.interruptPriority = (InterruptPriority)0; scepterOverrideDef.isCombatSkill = true; scepterOverrideDef.mustKeyPress = true; scepterOverrideDef.cancelSprintingOnActivation = false; scepterOverrideDef.rechargeStock = 1; scepterOverrideDef.requiredStock = 1; scepterOverrideDef.stockToConsume = 1; scepterOverrideDef.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("scepter"); scepterOverrideDef.skillDescriptionToken = "DRAGONDEVASTATOR_SPEC_DESCRIPTION_SCEPTER"; scepterOverrideDef.skillName = "DRAGONDEVASTATOR_SPEC_SCEPTER"; scepterOverrideDef.skillNameToken = "DRAGONDEVASTATOR_SPEC_SCEPTER"; ContentAddition.AddSkillDef(val); } private void RegisterCharacter() { //IL_0075: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) characterDisplay = PrefabAPI.InstantiateClone(characterPrefab, "「V??oid Devastator』Display", true); Object.Destroy((Object)(object)characterDisplay.GetComponent<KinematicCharacterMotor>()); Object.Destroy((Object)(object)characterDisplay.GetComponent<CharacterBody>()); Object.Destroy((Object)(object)characterDisplay.GetComponent<CharacterMotor>()); Object.Destroy((Object)(object)characterDisplay.GetComponent<CharacterDirection>()); characterDisplay.transform.localRotation = Quaternion.Euler(0f, 344f, 0f); characterDisplay.transform.rotation = Quaternion.Euler(0f, 344f, 0f); characterDisplay.transform.localScale = Vector3.one * 0.5f; characterDisplay.transform.position = new Vector3(0f, 1.5f, 0f); characterDisplay.AddComponent<DisplayController>(); characterDisplay.GetComponent<ModelLocator>().modelBaseTransform.localScale = Vector3.one; RendererInfo[] baseRendererInfos = characterDisplay.GetComponentInChildren<CharacterModel>().baseRendererInfos; for (int i = 0; i < baseRendererInfos.Length; i++) { Material val = Object.Instantiate<Material>(baseRendererInfos[i].defaultMaterial); val.DisableKeyword("DITHER"); baseRendererInfos[i].defaultMaterial = val; } string text = "Void Devastator is a bulky tank of a survivor, using ranged attacks to batter whole groups of foes while inflicting multiple stacks of collapse.<style=cSub>\r\n\r\n< ! > Devastator is a little slower than the average survivor- especially when using the alternate utility." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Scour is a close-range combo setup tool. It leaves explosive charges embedded where it strikes, which can be detonated with either Banish Charge or the explosion from Submerge. " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Your utility choice massively influences your build- Submerge gives excellent evasion and offense, while Abjure makes you a tanky bulwark." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Annihilate's on-hit and on-explode damage are both fairly weak, but the flurries of Collapse inflicted can decimate the health of bosses." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > It is time for crab."; string text2 = "..and so it left, off to hunt more prey among the stars."; string text3 = "..and so it returned, having caught worthy quarry."; LanguageAPI.Add("DRAGONDEVASTATOR_NAME", "「V??oid Devastator』"); LanguageAPI.Add("DRAGONDEVASTATOR_DESCRIPTION", text); LanguageAPI.Add("DRAGONDEVASTATOR_SUBTITLE", ""); LanguageAPI.Add("DRAGONDEVASTATOR_OUTRO", text2); LanguageAPI.Add("DRAGONDEVASTATOR_FAIL", text3); SurvivorDef val2 = ScriptableObject.CreateInstance<SurvivorDef>(); val2.cachedName = "DRAGONDEVASTATOR_NAME"; val2.unlockableDef = null; val2.descriptionToken = "DRAGONDEVASTATOR_DESCRIPTION"; val2.primaryColor = characterColor; val2.bodyPrefab = characterPrefab; val2.displayPrefab = characterDisplay; val2.outroFlavorToken = "DRAGONDEVASTATOR_OUTRO"; val2.mainEndingEscapeFailureFlavorToken = "DRAGONDEVASTATOR_FAIL"; ContentAddition.AddSurvivorDef(val2); } private void CreateDoppelganger() { //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) doppelganger = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/VoidMegaCrabMaster.prefab").WaitForCompletion(), "「V??oid Devastator』Master", true); ContentAddition.AddMaster(doppelganger); CharacterMaster component = doppelganger.GetComponent<CharacterMaster>(); component.bodyPrefab = characterPrefab; } } public static class ModCompat { private static bool? emoteEnabled; private static bool? skillsEnabled; private static bool? ancientEnabled; public static bool AncientScepterEnabled { get { if (!ancientEnabled.HasValue) { ancientEnabled = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); } return ancientEnabled.Value; } } public static void AddScepterSupport() { ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(MainPlugin.scepterOverrideDef, "「V??oid Devastator』Body", (SkillSlot)3, 0); } } internal class Prefabs { internal static ModdedDamageType collapse; internal static ModdedDamageType missile; internal static ModdedDamageType missileScepter; internal static GameObject chargedBlackCannonProjectile; internal static GameObject missileProjectile; internal static GameObject missileScepterProjectile; internal static GameObject missileScepterProjectileGhost; internal static GameObject missileStuckProjectile; internal static GameObject missileStuckProjectileScepter; internal static GameObject dashEffect; internal static GameObject shieldAttachment; internal static BuffDef shieldBuff; internal static void CreatePrefabs() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_0128: 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_016c: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0249: 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_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03de: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Unknown result type (might be due to invalid IL or missing references) shieldBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)shieldBuff).name = "Void Shield"; shieldBuff.iconSprite = Assets.MainAssetBundle.LoadAsset<Sprite>("shieldBuff"); shieldBuff.buffColor = Color.white; shieldBuff.canStack = false; shieldBuff.isDebuff = false; shieldBuff.eliteDef = null; shieldBuff.isHidden = false; ContentAddition.AddBuffDef(shieldBuff); collapse = DamageAPI.ReserveDamageType(); missile = DamageAPI.ReserveDamageType(); missileScepter = DamageAPI.ReserveDamageType(); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MajorAndMinorConstruct/MegaConstructBubbleShield.prefab").WaitForCompletion(); shieldAttachment = PrefabAPI.InstantiateClone(val, "VoidDevastatorShieldAttachment", true); shieldAttachment.GetComponent<NetworkIdentity>().localPlayerAuthority = true; ((Renderer)((Component)shieldAttachment.transform.Find("Fairies")).GetComponent<ParticleSystemRenderer>()).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/ChainLightningVoid/matLightningVoid.mat").WaitForCompletion(); Transform val2 = shieldAttachment.transform.Find("Collision"); val2.localPosition = new Vector3(1f, -4f, 0f); Object.Destroy((Object)(object)((Component)val2).GetComponent<MeshCollider>()); ((Component)val2).gameObject.AddComponent<SphereCollider>().radius = 0.25f; Transform val3 = val2.Find("ActiveVisual"); val3.localScale = Vector3.one * 0.25f; Renderer component = ((Component)val3).GetComponent<Renderer>(); component.sharedMaterials = (Material[])(object)new Material[1] { Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidRaidCrab/matVoidRaidCrabTripleBeamSphere2.mat").WaitForCompletion() }; dashEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MegaCrabBlackCannonProjectile.prefab").WaitForCompletion(), "VoidDashExplosionEffect", false); Utils.RegisterEffect(dashEffect, 1f, "Play_voidman_m2_explode"); chargedBlackCannonProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MegaCrabBlackCannonProjectile.prefab").WaitForCompletion(), "ChargedBlackCannonProjectile", true); chargedBlackCannonProjectile.AddComponent<ModdedDamageTypeHolderComponent>().Add(collapse); ContentAddition.AddProjectile(chargedBlackCannonProjectile); missileProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MissileVoidBigProjectile.prefab").WaitForCompletion(), "VoidMissileProjectile", true); missileProjectile.AddComponent<ModdedDamageTypeHolderComponent>().Add(missile); ContentAddition.AddProjectile(missileProjectile); missileStuckProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MegaCrabWhiteCannonStuckProjectile.prefab").WaitForCompletion(), "VoidMissileStuckProjectile", true); missileStuckProjectile.GetComponent<ProjectileController>().allowPrediction = false; missileStuckProjectile.AddComponent<SphereCollider>().radius = 0.5f; ProjectileStickOnImpact val4 = missileStuckProjectile.AddComponent<ProjectileStickOnImpact>(); val4.ignoreWorld = false; val4.ignoreCharacters = false; ProjectileImpactExplosion component2 = missileStuckProjectile.GetComponent<ProjectileImpactExplosion>(); component2.lifetimeAfterImpact = 2f; component2.lifetime = 2f; component2.timerAfterImpact = true; component2.destroyOnEnemy = false; component2.destroyOnWorld = false; ((ProjectileExplosion)component2).blastDamageCoefficient = 1f; ((ProjectileExplosion)component2).explosionEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidBarnacle/VoidBarnacleImpactExplosion.prefab").WaitForCompletion(); component2.impactEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidBarnacle/VoidBarnacleImpactExplosion.prefab").WaitForCompletion(); missileStuckProjectile.AddComponent<ModdedDamageTypeHolderComponent>().Add(collapse); ContentAddition.AddProjectile(missileStuckProjectile); missileStuckProjectileScepter = PrefabAPI.InstantiateClone(missileStuckProjectile, "VoidMissileStuckScepterProjectile", true); ((ProjectileExplosion)missileStuckProjectileScepter.GetComponent<ProjectileImpactExplosion>()).blastRadius = 6f; ContentAddition.AddProjectile(missileStuckProjectileScepter); missileScepterProjectileGhost = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MissileVoidBigGhost.prefab").WaitForCompletion(), "VoidMissileScepterProjectileGhost", false); ((Renderer)missileScepterProjectileGhost.GetComponentInChildren<TrailRenderer>()).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/RandomEquipmentTrigger/matBottledChaosTrail.mat").WaitForCompletion(); missileScepterProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MissileVoidBigProjectile.prefab").WaitForCompletion(), "VoidMissileScepterProjectile", true); missileScepterProjectile.AddComponent<ProjectileController>().ghostPrefab = missileScepterProjectileGhost; missileScepterProjectile.AddComponent<ModdedDamageTypeHolderComponent>().Add(missile); ContentAddition.AddProjectile(missileScepterProjectile); } } internal class CharacterMain : GenericCharacterMain { public override void Update() { ((GenericCharacterMain)this).Update(); ((BaseCharacterMain)this).modelAnimator.SetBool("isSprinting", false); } } internal class Primary : ChargeCrabWhiteCannon { public override FireCrabCannonBase GetNextState() { return (FireCrabCannonBase)(object)new FirePrimary(); } public override void OnEnter() { //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) ((ChargeCrabCannonBase)this).baseDuration = 0.6f; ((ChargeCrabCannonBase)this).chargeEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/VoidMegacrabWhiteSphereChargeFX.prefab").WaitForCompletion(); ((ChargeCrabCannonBase)this).chargeMuzzleName = "MuzzleWhiteCannon"; ((ChargeCrabCannonBase)this).soundName = "Play_voidDevastator_m1_chargeUp"; ((ChargeCrabCannonBase)this).animationLayerName = "Left Gun Override (Arm)"; ((ChargeCrabCannonBase)this).animationStateName = "LeftShootPrepAndCharge"; ((ChargeCrabCannonBase)this).animationPlaybackRateParam = "LeftCharge.playbackRate"; ((ChargeCrabCannonBase)this).animationCrossfadeDuration = 0.2f; ((ChargeCrabCannonBase)this).OnEnter(); } } internal class FirePrimary : FireCrabWhiteCannon { public override void OnEnter() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) ((FireCrabCannonBase)this).projectileCount = 10; ((FireCrabCannonBase)this).muzzleflashEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MegaCrabWhiteMuzzleFlash.prefab").WaitForCompletion(); ((FireCrabCannonBase)this).projectilePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/MegaCrabWhiteCannonProjectile.prefab").WaitForCompletion(); ((FireCrabCannonBase)this).totalYawSpread = 2f; ((FireCrabCannonBase)this).spread = FireHook.spread; ((FireCrabCannonBase)this).muzzleName = "MuzzleWhiteCannon"; ((FireCrabCannonBase)this).attackSound = "Play_voidDevastator_m1_fire"; ((FireCrabCannonBase)this).OnEnter(); ((FireCrabCannonBase)this).fireDuration = 0f; } public override void FixedUpdate() { ((FireCrabCannonBase)this).FixedUpdate(); if (((FireCrabCannonBase)this).projectilesFired < ((FireCrabCannonBase)this).projectileCount) { MyFireProjectile(); } } private void MyFireProjectile() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: 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_00f2: 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_00f6: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound(((FireCrabCannonBase)this).attackSound, ((EntityState)this).gameObject); ((EntityState)this).characterBody.SetAimTimer(3f); if (Object.op_Implicit((Object)(object)((FireCrabCannonBase)this).muzzleflashEffectPrefab)) { EffectManager.SimpleMuzzleFlash(((FireCrabCannonBase)this).muzzleflashEffectPrefab, ((EntityState)this).gameObject, ((FireCrabCannonBase)this).muzzleName, false); } if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); int num = Mathf.FloorToInt((float)((FireCrabCannonBase)this).projectilesFired - (float)(((FireCrabCannonBase)this).projectileCount - 1) / 2f); float num2 = Random.Range(0f - ((FireCrabCannonBase)this).spread, ((FireCrabCannonBase)this).spread) / 2f; float num3 = Random.Range(0f - ((FireCrabCannonBase)this).spread, ((FireCrabCannonBase)this).spread) / 2f; Vector3 val = Util.ApplySpread(((Ray)(ref aimRay)).direction, 0f, 0f, 1f, 1f, num3, num2); Vector3 position = ((FireCrabCannonBase)this).muzzleTransform.position; ProjectileManager.instance.FireProjectile(((FireCrabCannonBase)this).projectilePrefab, position, Util.QuaternionSafeLookRotation(val), ((EntityState)this).gameObject, ((BaseState)this).damageStat * ((FireCrabCannonBase)this).damageCoefficient, ((FireCrabCannonBase)this).force, Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } ((FireCrabCannonBase)this).projectilesFired = ((FireCrabCannonBase)this).projectilesFired + 1; } } internal class Secondary : ChargeCrabBlackCannon { public override void OnEnter() { //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) ((ChargeCrabCannonBase)this).baseDuration = 1f; ((ChargeCrabCannonBase)this).chargeEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/VoidMegacrabBlackSphereChargeFX.prefab").WaitForCompletion(); ((ChargeCrabCannonBase)this).chargeMuzzleName = "MuzzleBlackCannon"; ((ChargeCrabCannonBase)this).soundName = "Play_voidDevastator_m2_chargeUp"; ((ChargeCrabCannonBase)this).animationLayerName = "Right Gun Override (Arm)"; ((ChargeCrabCannonBase)this).animationStateName = "RightShootPrepAndCharge"; ((ChargeCrabCannonBase)this).animationPlaybackRateParam = "RightCharge.playbackRate"; ((ChargeCrabCannonBase)this).animationCrossfadeDuration = 0.2f; ((ChargeCrabCannonBase)this).OnEnter(); } } internal class Special : FireVoidMissiles { public override void OnEnter() { FireVoidMissiles.projectilePrefab = Prefabs.missileProjectile; ((FireVoidMissiles)this).OnEnter(); } } internal class SpecialScepter : FireVoidMissiles { public override void OnEnter() { FireVoidMissiles.projectilePrefab = Prefabs.missileScepterProjectile; FireVoidMissiles.baseDurationBetweenMissiles = 0.1f; ((FireVoidMissiles)this).OnEnter(); } } internal class Utility : BaseSkillState { private float duration = 0.25f; public float speedCoefficient = 5f; private Vector3 blinkVector = Vector3.zero; private HurtBoxGroup hurtboxGroup; public override void OnEnter() { //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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Util.PlaySound("Play_voidman_m2_shoot", ((EntityState)this).gameObject); blinkVector = GetBlinkVector(); EffectManager.SimpleEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherDashEffect.prefab").WaitForCompletion(), ((EntityState)this).characterBody.corePosition, Util.QuaternionSafeLookRotation(((EntityState)this).characterDirection.forward, Vector3.up), false); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); if (Object.op_Implicit((Object)(object)hurtboxGroup)) { int hurtBoxesDeactivatorCounter = hurtboxGroup.hurtBoxesDeactivatorCounter + 1; hurtboxGroup.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } PrintController component = ((Component)modelTransform).GetComponent<PrintController>(); if (Object.op_Implicit((Object)(object)component)) { component.printTime = 0.8f; ((Behaviour)component).enabled = true; } } } private Vector3 GetBlinkVector() { //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_002b: 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_0030: 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) Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); return ((Vector3)(ref val)).normalized; } public override void FixedUpdate() { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = true; if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += blinkVector * (((BaseState)this).moveSpeedStat * speedCoefficient * Time.fixedDeltaTime); } } public override void OnExit() { //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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: 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_00f0: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)hurtboxGroup)) { int hurtBoxesDeactivatorCounter = hurtboxGroup.hurtBoxesDeactivatorCounter - 1; hurtboxGroup.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } EffectManager.SimpleEffect(Prefabs.dashEffect, ((EntityState)this).characterBody.corePosition, Quaternion.identity, false); if (((EntityState)this).isAuthority) { BlastAttack val = new BlastAttack(); val.radius = 15f; val.procCoefficient = 1f; val.position = ((EntityState)this).transform.position; val.attacker = ((EntityState)this).gameObject; val.crit = Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master); val.baseDamage = ((EntityState)this).characterBody.damage * 2.8f; val.falloffModel = (FalloffModel)0; val.damageType = (DamageType)32; val.baseForce = 200f; val.teamIndex = TeamComponent.GetObjectTeam(val.attacker); val.attackerFiltering = (AttackerFiltering)2; val.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)1; } } internal class AltUtility : BaseSkillState { private float duration = 4f; private NetworkedBodyAttachment attachment; private AimRequest request; public override void OnEnter() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Util.PlaySound("Play_voidman_shift_end", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { request = ((EntityState)this).cameraTargetParams.RequestAimType((AimType)2); } if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Prefabs.shieldBuff); attachment = Object.Instantiate<GameObject>(Prefabs.shieldAttachment, new Vector3(0f, 0f, 0.1f), Quaternion.identity, (Transform)null).GetComponent<NetworkedBodyAttachment>(); attachment.AttachToGameObjectAndSpawn(((Component)((EntityState)this).characterBody).gameObject, (string)null); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { request.Dispose(); } if (NetworkServer.active && Object.op_Implicit((Object)(object)attachment)) { ((EntityState)this).characterBody.RemoveBuff(Prefabs.shieldBuff); EntityState.Destroy((Object)(object)((Component)attachment).gameObject); } } } internal class Utils { public static EntityStateMachine NewStateMachine<T>(GameObject obj, string customName) where T : EntityState { //IL_0021: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) SerializableEntityStateType val = default(SerializableEntityStateType); ((SerializableEntityStateType)(ref val))..ctor(typeof(T)); EntityStateMachine val2 = obj.AddComponent<EntityStateMachine>(); val2.customName = customName; val2.initialStateType = val; val2.mainStateType = val; return val2; } internal static T CopyComponent<T>(T original, GameObject destination) where T : Component { Type type = ((object)original).GetType(); Component val = destination.AddComponent(type); FieldInfo[] fields = type.GetFields(); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { fieldInfo.SetValue(val, fieldInfo.GetValue(original)); } return (T)(object)((val is T) ? val : null); } public static Sprite CreateSpriteFromTexture(Texture2D texture) { //IL_0025: 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) if (Object.op_Implicit((Object)(object)texture)) { return Sprite.Create(texture, new Rect(0f, 0f, (float)((Texture)texture).width, (float)((Texture)texture).height), new Vector2(0.5f, 0.5f)); } return null; } public static GameObject FindInActiveObjectByName(string name) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 Transform[] array = Resources.FindObjectsOfTypeAll<Transform>(); for (int i = 0; i < array.Length; i++) { if ((int)((Object)array[i]).hideFlags == 0 && ((Object)array[i]).name == name) { return ((Component)array[i]).gameObject; } } return null; } public static GameObject CreateHitbox(string name, Transform parent, Vector3 scale) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_001b: 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_003d: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name); val.transform.SetParent(parent); val.transform.localPosition = Vector3.zero; val.transform.localRotation = Quaternion.identity; val.transform.localScale = scale; HitBoxGroup val2 = ((Component)parent).gameObject.AddComponent<HitBoxGroup>(); HitBox val3 = val.AddComponent<HitBox>(); val.layer = LayerIndex.projectile.intVal; val2.hitBoxes = (HitBox[])(object)new HitBox[1] { val3 }; val2.groupName = name; return val; } internal static void RegisterEffect(GameObject effect, float duration, string soundName = "") { //IL_0084: 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) EffectComponent val = effect.GetComponent<EffectComponent>(); if (!Object.op_Implicit((Object)(object)val)) { val = effect.AddComponent<EffectComponent>(); } if (!Object.op_Implicit((Object)(object)effect.GetComponent<DestroyOnTimer>())) { effect.AddComponent<DestroyOnTimer>().duration = duration; } if (!Object.op_Implicit((Object)(object)effect.GetComponent<NetworkIdentity>())) { effect.AddComponent<NetworkIdentity>(); } if (!Object.op_Implicit((Object)(object)effect.GetComponent<VFXAttributes>())) { effect.AddComponent<VFXAttributes>().vfxPriority = (VFXPriority)2; } val.applyScale = false; val.effectIndex = (EffectIndex)(-1); val.parentToReferencedTransform = true; val.positionAtReferencedTransform = true; val.soundName = soundName; ContentAddition.AddEffect(effect); } public static Material InstantiateMaterial(Color color, Texture tex, Color emColor, float emPower, Texture emTex, float normStr, Texture normTex) { //IL_0037: 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) Material val = Object.Instantiate<Material>(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren<CharacterModel>().baseRendererInfos[0].defaultMaterial); if (Object.op_Implicit((Object)(object)val)) { val.SetColor("_Color", color); val.SetTexture("_MainTex", tex); val.SetColor("_EmColor", emColor); val.SetFloat("_EmPower", emPower); val.SetTexture("_EmTex", emTex); val.SetFloat("_NormalStrength", 1f); val.SetTexture("_NormalTex", normTex); return val; } return val; } public static Material FindMaterial(string name) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 Material[] array = Resources.FindObjectsOfTypeAll<Material>(); for (int i = 0; i < array.Length; i++) { if ((int)((Object)array[i]).hideFlags == 0 && ((Object)array[i]).name == name) { return array[i]; } } return null; } }