Decompiled source of Xerath v1.0.1
Xerath.dll
Decompiled 8 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EntityStates; using EntityStates.Commando; using EntityStates.Huntress; using HG.BlendableTypes; using KinematicCharacterController; using R2API; using R2API.Utils; using RoR2; using RoR2.Audio; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; [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("Xerath")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Xerath")] [assembly: AssemblyTitle("Xerath")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Xerath; internal class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Xerath.xerathassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Xerath.Xerath.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class eeeee : MonoBehaviour { private GameObject obj; private Tracer tracer; private void OnEnable() { tracer = ((Component)this).GetComponent<Tracer>(); } private void Update() { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)obj) && Object.op_Implicit((Object)(object)tracer) && Object.op_Implicit((Object)(object)tracer.beamObject)) { obj = tracer.beamObject; Vector3 localPosition = obj.transform.localPosition; obj.transform.localPosition = new Vector3(localPosition.x, localPosition.y, localPosition.z + 5f); } } } internal class ProjectileLinePathing : MonoBehaviour { private Rigidbody rigidbody; public Vector3[] positions = (Vector3[])(object)new Vector3[0]; public float speed; private int index = 0; private void OnEnable() { rigidbody = ((Component)this).GetComponent<Rigidbody>(); ProjectileSimple component = ((Component)this).GetComponent<ProjectileSimple>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = false; } } private void Update() { //IL_0040: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_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_0093: 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_00c0: 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) if (Object.op_Implicit((Object)(object)rigidbody) && positions.Length != 0 && index != positions.Length) { ((Component)this).transform.rotation = Quaternion.LookRotation(Vector3.RotateTowards(((Component)this).transform.forward, ((Component)this).transform.position - positions[index], speed * Time.deltaTime, 0f)); ((Component)this).transform.position = Vector3.Lerp(((Component)this).transform.position, positions[index], speed); if (((Component)this).transform.position == positions[index]) { index++; } } } } internal class XerathProjectileTeleport : MonoBehaviour { private GameObject owner; private ProjectileController proj; private void OnEnable() { proj = ((Component)this).GetComponent<ProjectileController>(); } private void FixedUpdate() { if (!Object.op_Implicit((Object)(object)owner) && Object.op_Implicit((Object)(object)proj) && Object.op_Implicit((Object)(object)proj.owner)) { owner = proj.owner; } } private void OnCollisionEnter(Collision collision) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)collision.collider) && Object.op_Implicit((Object)(object)((Component)collision.collider).gameObject) && !Object.op_Implicit((Object)(object)((Component)collision.collider).gameObject.GetComponent<HurtBox>()) && Object.op_Implicit((Object)(object)owner)) { owner.GetComponent<XerathTPHandler>().SetTP(((Component)this).transform.position); } } } internal class XerathTPHandler : MonoBehaviour { public Vector3 pos; private SkillLocator skillLocator; public static SkillDef tpOverride; private bool hasOverride; private float stopwatch; private GameObject tpLocationEffect; private void OnEnable() { skillLocator = ((Component)this).GetComponent<SkillLocator>(); } private void FixedUpdate() { if (hasOverride) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= 3f) { UnSet(); } } else if (stopwatch > 0f) { stopwatch = 0f; } } public void SetTP(Vector3 position) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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) pos = position; hasOverride = true; tpLocationEffect = Object.Instantiate<GameObject>(Prefabs.tpLocEffect, position, Quaternion.Euler(90f, 0f, 0f)); if (Object.op_Implicit((Object)(object)skillLocator)) { skillLocator.utility.SetSkillOverride((object)this, tpOverride, (SkillOverridePriority)4); } } public void UnSet() { hasOverride = false; if (Object.op_Implicit((Object)(object)tpLocationEffect)) { Object.Destroy((Object)(object)tpLocationEffect); } if (Object.op_Implicit((Object)(object)skillLocator)) { skillLocator.utility.UnsetSkillOverride((object)this, tpOverride, (SkillOverridePriority)4); } } } 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 RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)((Component)sender).GetComponent<XerathTPHandler>())) { args.armorAdd += sender.damage * 0.25f; } } } [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.Xerath", "Xerath", "1.0.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.Xerath"; public const string MODNAME = "Xerath"; public const string VERSION = "1.0.1"; public const string SURVIVORNAME = "Xerath"; public const string SURVIVORNAMEKEY = "XERATH"; public static GameObject characterPrefab; private static readonly Color characterColor = new Color(0.2902f, 0.70588f, 0.98431f); private void Awake() { Assets.PopulateAssets(); Prefabs.CreatePrefabs(); CreatePrefab(); RegisterStates(); RegisterCharacter(); Hook.Hooks(); } internal static 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_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_017d: 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_019f: 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) //IL_01b5: Expected O, but got Unknown //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: 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_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_04b4: Unknown result type (might be due to invalid IL or missing references) //IL_04e1: Unknown result type (might be due to invalid IL or missing references) //IL_04e6: Unknown result type (might be due to invalid IL or missing references) //IL_056f: Unknown result type (might be due to invalid IL or missing references) //IL_059f: Unknown result type (might be due to invalid IL or missing references) //IL_05ac: Unknown result type (might be due to invalid IL or missing references) //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_0854: Unknown result type (might be due to invalid IL or missing references) //IL_086b: Unknown result type (might be due to invalid IL or missing references) //IL_0870: Unknown result type (might be due to invalid IL or missing references) //IL_0878: Unknown result type (might be due to invalid IL or missing references) //IL_08d6: Unknown result type (might be due to invalid IL or missing references) //IL_09ac: Unknown result type (might be due to invalid IL or missing references) //IL_09b1: Unknown result type (might be due to invalid IL or missing references) //IL_09d4: Unknown result type (might be due to invalid IL or missing references) //IL_09d9: Unknown result type (might be due to invalid IL or missing references) //IL_0a07: Unknown result type (might be due to invalid IL or missing references) //IL_0a0c: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); characterPrefab = PrefabAPI.InstantiateClone(val, "XerathBody", true); characterPrefab.AddComponent<XerathTPHandler>(); characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("ModelBase")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("CameraPivot")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("AimOrigin")).gameObject); GameObject val2 = Assets.MainAssetBundle.LoadAsset<GameObject>("xerath"); LineRenderer[] componentsInChildren = val2.GetComponentsInChildren<LineRenderer>(true); foreach (LineRenderer val3 in componentsInChildren) { ChildLocator component = ((Component)val3).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component) && component.transformPairs.Length != 0) { val3.widthMultiplier = 2f; LineBetweenTransforms val4 = ((Component)val3).gameObject.AddComponent<LineBetweenTransforms>(); val4._transformNodes = (Transform[])(object)new Transform[2] { ((Component)val3).transform, component.transformPairs[0].transform }; } } GameObject val5 = new GameObject("ModelBase"); val5.transform.parent = characterPrefab.transform; val5.transform.localPosition = new Vector3(0f, -0.94f, 0f); val5.transform.localRotation = Quaternion.identity; val5.transform.localScale = Vector3.one; GameObject val6 = new GameObject("AimOrigin"); val6.transform.parent = val5.transform; val6.transform.localPosition = new Vector3(0f, 2.4f, 0f); val6.transform.localRotation = Quaternion.identity; val6.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val5.transform; transform.localPosition = Vector3.zero; transform.localScale = Vector3.one * 1.7f; transform.localRotation = Quaternion.identity; CharacterDirection component2 = characterPrefab.GetComponent<CharacterDirection>(); component2.moveVector = Vector3.zero; component2.targetTransform = val5.transform; component2.overrideAnimatorForwardTransform = null; component2.rootMotionAccumulator = null; component2.modelAnimator = val2.GetComponentInChildren<Animator>(); component2.driveFromRootRotation = false; component2.turnSpeed = 720f; CharacterBody component3 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component3).name = "XerathBody"; component3.baseNameToken = "XERATH_NAME"; component3.subtitleNameToken = "XERATH_SUBTITLE"; component3.bodyFlags = (BodyFlags)16; component3.rootMotionInMainState = false; component3.mainRootSpeed = 0f; component3.baseMaxHealth = 100f; component3.levelMaxHealth = 35f; component3.baseRegen = 1f; component3.levelRegen = 0.33f; component3.baseMaxShield = 0f; component3.levelMaxShield = 0f; component3.baseMoveSpeed = 7f; component3.levelMoveSpeed = 0f; component3.baseAcceleration = 110f; component3.baseJumpPower = 15f; component3.levelJumpPower = 0f; component3.baseDamage = 12f; component3.levelDamage = 2.4f; component3.baseAttackSpeed = 1f; component3.levelAttackSpeed = 0f; component3.baseCrit = 1f; component3.levelCrit = 0f; component3.baseArmor = 0f; component3.levelArmor = 0f; component3.baseJumpCount = 1; component3.sprintingSpeedMultiplier = 1.45f; component3.wasLucky = false; component3.hideCrosshair = false; component3.aimOriginTransform = val6.transform; component3.hullClassification = (HullClassification)0; component3.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture; component3.isChampion = false; component3.currentVehicle = null; component3.skinIndex = 0u; component3.bodyColor = characterColor; CharacterMotor component4 = characterPrefab.GetComponent<CharacterMotor>(); component4.walkSpeedPenaltyCoefficient = 1f; component4.characterDirection = component2; component4.muteWalkMotion = false; component4.mass = 160f; component4.airControl = 0.25f; component4.disableAirControlUntilCollision = false; component4.generateParametersOnAwake = true; InputBankTest component5 = characterPrefab.GetComponent<InputBankTest>(); component5.moveVector = Vector3.zero; CameraTargetParams component6 = characterPrefab.GetComponent<CameraTargetParams>(); component6.cameraParams = val.GetComponent<CameraTargetParams>().cameraParams; component6.cameraPivotTransform = null; component6.recoil = Vector2.zero; component6.dontRaycastToPivot = false; ModelLocator component7 = characterPrefab.GetComponent<ModelLocator>(); component7.modelTransform = transform; component7.modelBaseTransform = val5.transform; component7.dontReleaseModelOnDeath = false; component7.autoUpdateModelTransform = true; component7.dontDetatchFromParent = false; component7.noCorpse = false; component7.normalizeToFloor = false; component7.preserveModel = false; ChildLocator component8 = val2.GetComponent<ChildLocator>(); CharacterModel val7 = val2.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren2 = val2.GetComponentsInChildren<SkinnedMeshRenderer>(); List<RendererInfo> list = new List<RendererInfo>(); for (int j = 0; j < componentsInChildren2.Length; j++) { list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren2[j], defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren2[j]).material.mainTexture), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] array = list.ToArray(); val7.body = component3; val7.baseRendererInfos = array; val7.autoPopulateLightInfos = true; val7.invisibilityCount = 0; val7.temporaryOverlays = new List<TemporaryOverlay>(); Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val7, "mainSkinnedMeshRenderer", componentsInChildren2[0]); GameObject gameObject = ((Component)transform).gameObject; CharacterModel component9 = gameObject.GetComponent<CharacterModel>(); ModelSkinController val8 = gameObject.AddComponent<ModelSkinController>(); ChildLocator component10 = gameObject.GetComponent<ChildLocator>(); LanguageAPI.Add("XERATHBODY_DEFAULT_SKIN_NAME", "Default"); val8.skins = (SkinDef[])(object)new SkinDef[1] { LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(array, gameObject, "XERATHBODY_DEFAULT_SKIN_NAME", "base", array)) }; HealthComponent component11 = characterPrefab.GetComponent<HealthComponent>(); component11.health = component3.baseMaxHealth; component11.shield = 0f; component11.barrier = 0f; component11.magnetiCharge = 0f; component11.body = null; component11.dontShowHealthbar = false; component11.globalDeathEventChanceCoefficient = 1f; characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f; characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true; SfxLocator component12 = characterPrefab.GetComponent<SfxLocator>(); component12.deathSound = "Play_ui_player_death"; component12.barkSound = ""; component12.openSound = ""; component12.landingSound = "Play_char_land"; component12.fallDamageSound = "Play_char_land_fall_damage"; component12.aliveLoopStart = ""; component12.aliveLoopStop = ""; Rigidbody component13 = characterPrefab.GetComponent<Rigidbody>(); component13.mass = 100f; component13.drag = 0f; component13.angularDrag = 0f; component13.useGravity = false; component13.isKinematic = true; component13.interpolation = (RigidbodyInterpolation)0; component13.collisionDetectionMode = (CollisionDetectionMode)0; component13.constraints = (RigidbodyConstraints)0; CapsuleCollider component14 = ((Component)component8.FindChild("collider")).GetComponent<CapsuleCollider>(); ((Collider)component14).isTrigger = false; ((Collider)component14).material = null; KinematicCharacterMotor component15 = characterPrefab.GetComponent<KinematicCharacterMotor>(); component15.CharacterController = (BaseCharacterController)(object)component4; component15.Capsule = component14; component15.Rigidbody = component13; component15.DetectDiscreteCollisions = false; component15.GroundDetectionExtraDistance = 0f; component15.MaxStepHeight = 0.2f; component15.MinRequiredStepDepth = 0.1f; component15.MaxStableSlopeAngle = 55f; component15.MaxStableDistanceFromLedge = 0.5f; component15.PreventSnappingOnLedges = false; component15.MaxStableDenivelationAngle = 55f; component15.RigidbodyInteractionType = (RigidbodyInteractionType)0; component15.PreserveAttachedRigidbodyMomentum = true; component15.HasPlanarConstraint = false; component15.PlanarConstraintAxis = Vector3.up; component15.StepHandling = (StepHandlingMethod)0; component15.LedgeHandling = true; component15.InteractiveRigidbodyHandling = true; component15.SafeMovement = false; HurtBoxGroup val9 = val2.AddComponent<HurtBoxGroup>(); HurtBox val10 = ((Component)component14).gameObject.AddComponent<HurtBox>(); ((Component)val10).gameObject.layer = LayerIndex.entityPrecise.intVal; val10.healthComponent = component11; val10.isBullseye = true; val10.damageModifier = (DamageModifier)0; val10.hurtBoxGroup = val9; val10.indexInGroup = 0; val9.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val10 }; val9.mainHurtBox = val10; val9.bullseyeCount = 1; AimAnimator val11 = val2.AddComponent<AimAnimator>(); val11.inputBank = component5; val11.directionComponent = component2; val11.pitchRangeMax = 55f; val11.pitchRangeMin = -50f; val11.yawRangeMin = -44f; val11.yawRangeMax = 44f; val11.pitchGiveupRange = 30f; val11.yawGiveupRange = 10f; val11.giveupDuration = 8f; FootstepHandler val12 = val2.AddComponent<FootstepHandler>(); val12.baseFootstepString = "Play_player_footstep"; val12.sprintFootstepOverrideString = ""; val12.enableFootstepDust = true; val12.footstepDustPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/GenericFootstepDust.prefab").WaitForCompletion(); EntityStateMachine component16 = ((Component)component3).GetComponent<EntityStateMachine>(); component16.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component17 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component17.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component17.deathState = new SerializableEntityStateType(typeof(DeathState)); ContentAddition.AddBody(characterPrefab); } private void RegisterCharacter() { //IL_00bb: 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_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) string text = "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > "; string text2 = "..and so he left."; string text3 = "..and so he vanished."; LanguageAPI.Add("XERATH_NAME", "Xerath"); LanguageAPI.Add("XERATH_DESCRIPTION", text); LanguageAPI.Add("XERATH_SUBTITLE", ""); LanguageAPI.Add("XERATH_OUTRO", text2); LanguageAPI.Add("XERATH_FAIL", text3); SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>(); val.cachedName = "XERATH_NAME"; val.unlockableDef = null; val.descriptionToken = "XERATH_DESCRIPTION"; val.primaryColor = characterColor; val.bodyPrefab = characterPrefab; val.displayPrefab = Utils.NewDisplayModel(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "XerathDisplay"); val.outroFlavorToken = "XERATH_OUTRO"; val.desiredSortPosition = 0.2f; val.mainEndingEscapeFailureFlavorToken = "XERATH_FAIL"; ContentAddition.AddSurvivorDef(val); SkillSetup(); GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoMonsterMaster.prefab").WaitForCompletion(), "XerathMaster", true); ContentAddition.AddMaster(val2); CharacterMaster component = val2.GetComponent<CharacterMaster>(); component.bodyPrefab = characterPrefab; } private void RegisterStates() { //IL_0003: 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_0013: 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_0023: 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_0033: 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_0043: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<PrimaryCast>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<SecondaryCast>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<Special>(ref flag); ContentAddition.AddEntityState<UltPrimary>(ref flag); ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<Teleport>(ref flag); } private void SkillSetup() { GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } PassiveSetup(); PrimarySetup(); SecondarySetup(); UtilitySetup(); SpecialSetup(); } private void PassiveSetup() { SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("XERATH_PASSIVE_NAME", "Ascended Form"); LanguageAPI.Add("XERATH_PASSIVE_DESCRIPTION", "Xerath feeds on arcane power, becoming increasingly resilient to physical harm, granting him <style=cIsDamage>25%</style> of his <style=cIsDamage>damage</style> as bonus <style=cIsDamage>armor</style>."); component.passiveSkill.enabled = true; component.passiveSkill.skillNameToken = "XERATH_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "XERATH_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("passive"); } private void PrimarySetup() { //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_009b: 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) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Expected O, but got Unknown //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: 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("XERATH_M1", "Arcanopulse"); LanguageAPI.Add("XERATH_M1_DESCRIPTION", "Xerath fires a beam of energy in a line in the target direction that deals <style=cIsDamage>200-540% damage</style> to enemies hit. It can be charged to increase Arcanopulse's range and damage."); LanguageAPI.Add("XERATH_M1OVER", "Arcane Barrage"); LanguageAPI.Add("XERATH_M1OVER_DESCRIPTION", "Xerath calls down a blast of arcane energy that strike the target location, dealing <style=cIsDamage>800% damage</style> to enemies hit."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Primary)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 0; val.baseRechargeInterval = 0f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = true; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = false; val.cancelSprintingOnActivation = true; val.rechargeStock = 0; val.requiredStock = 0; val.stockToConsume = 0; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("primary"); val.skillDescriptionToken = "XERATH_M1_DESCRIPTION"; val.skillName = "XERATH_M1"; val.skillNameToken = "XERATH_M1"; ContentAddition.AddSkillDef(val); component.primary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val2); SkillFamily skillFamily = component.primary.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); Special.primaryOverride = ScriptableObject.CreateInstance<SkillDef>(); Special.primaryOverride.activationState = new SerializableEntityStateType(typeof(UltPrimary)); Special.primaryOverride.activationStateMachineName = "Weapon"; Special.primaryOverride.baseMaxStock = 6; Special.primaryOverride.baseRechargeInterval = 0f; Special.primaryOverride.beginSkillCooldownOnSkillEnd = true; Special.primaryOverride.canceledFromSprinting = false; Special.primaryOverride.fullRestockOnAssign = true; Special.primaryOverride.interruptPriority = (InterruptPriority)0; Special.primaryOverride.isCombatSkill = true; Special.primaryOverride.mustKeyPress = false; Special.primaryOverride.cancelSprintingOnActivation = true; Special.primaryOverride.rechargeStock = 0; Special.primaryOverride.requiredStock = 1; Special.primaryOverride.stockToConsume = 1; Special.primaryOverride.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("primary2"); Special.primaryOverride.skillDescriptionToken = "XERATH_M1OVER_DESCRIPTION"; Special.primaryOverride.skillName = "XERATH_M1OVER"; Special.primaryOverride.skillNameToken = "XERATH_M1OVER"; ContentAddition.AddSkillDef(Special.primaryOverride); } private void SecondarySetup() { //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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("XERATH_M2", "Eye of Destruction"); LanguageAPI.Add("XERATH_M2_DESCRIPTION", "Xerath casts down a blast of arcane energy that strikes the target location, dealing <style=cIsDamage>500% damage</style> and <style=cIsUtility>slows</style>."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Secondary)); val.activationStateMachineName = "Slide"; val.baseMaxStock = 1; val.baseRechargeInterval = 5f; val.beginSkillCooldownOnSkillEnd = true; 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>("secondary"); val.skillDescriptionToken = "XERATH_M2_DESCRIPTION"; val.skillName = "XERATH_M2"; val.skillNameToken = "XERATH_M2"; ContentAddition.AddSkillDef(val); component.secondary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val2); SkillFamily skillFamily = component.secondary.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); } private void UtilitySetup() { //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_009b: 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_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_0187: 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_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("XERATH_UTIL", "Shocking Orb"); LanguageAPI.Add("XERATH_UTIL_DESCRIPTION", "Xerath fires an orb of energy in the target direction that detonates on contact for <style=cIsDamage>400% damage</style> in a small area. If it hits terrain, Xerath can recast this ability to instantly <style=cIsDamage>teleport</style> to the hit location."); LanguageAPI.Add("XERATH_UTILTP", "Rematerialize"); LanguageAPI.Add("XERATH_UTILTP_DESCRIPTION", "Activate to instantly <style=cIsDamage>teleport</style> to the hit location."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Utility)); val.activationStateMachineName = "Body"; val.baseMaxStock = 1; val.baseRechargeInterval = 5f; val.beginSkillCooldownOnSkillEnd = true; 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>("utility"); val.skillDescriptionToken = "XERATH_UTIL_DESCRIPTION"; val.skillName = "XERATH_UTIL"; val.skillNameToken = "XERATH_UTIL"; val.keywordTokens = new string[1] { "KEYWORD_STUNNING" }; 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); XerathTPHandler.tpOverride = ScriptableObject.CreateInstance<SkillDef>(); XerathTPHandler.tpOverride.activationState = new SerializableEntityStateType(typeof(Teleport)); XerathTPHandler.tpOverride.activationStateMachineName = "Body"; XerathTPHandler.tpOverride.baseMaxStock = 1; XerathTPHandler.tpOverride.baseRechargeInterval = 0f; XerathTPHandler.tpOverride.beginSkillCooldownOnSkillEnd = true; XerathTPHandler.tpOverride.canceledFromSprinting = false; XerathTPHandler.tpOverride.fullRestockOnAssign = true; XerathTPHandler.tpOverride.interruptPriority = (InterruptPriority)0; XerathTPHandler.tpOverride.isCombatSkill = false; XerathTPHandler.tpOverride.mustKeyPress = true; XerathTPHandler.tpOverride.cancelSprintingOnActivation = false; XerathTPHandler.tpOverride.rechargeStock = 0; XerathTPHandler.tpOverride.requiredStock = 1; XerathTPHandler.tpOverride.stockToConsume = 1; XerathTPHandler.tpOverride.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("utility2"); XerathTPHandler.tpOverride.skillDescriptionToken = "XERATH_UTILTP_DESCRIPTION"; XerathTPHandler.tpOverride.skillName = "XERATH_UTILTP"; XerathTPHandler.tpOverride.skillNameToken = "XERATH_UTILTP"; ContentAddition.AddSkillDef(XerathTPHandler.tpOverride); } 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("XERATH_SPEC", "Rite of the Arcane"); LanguageAPI.Add("XERATH_SPEC_DESCRIPTION", "Xerath channels for up to <style=cIsUtility>10s</style> gaining the ability to cast up to 5 arcane missiles that strike the target location, dealing <style=cIsDamage>800% damage</style> to enemies hit."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Special)); val.activationStateMachineName = "Body"; val.baseMaxStock = 1; val.baseRechargeInterval = 8f; val.beginSkillCooldownOnSkillEnd = true; 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 = "XERATH_SPEC_DESCRIPTION"; val.skillName = "XERATH_SPEC"; val.skillNameToken = "XERATH_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); } } internal class Prefabs { internal static GameObject blastImpactEffect; internal static GameObject tracerEffect; internal static GameObject tracerEffectBig; internal static GameObject chargeEffect; internal static GameObject tpPropjectile; internal static GameObject tpPropjectileGhost; internal static GameObject tpPropjectileHitEffect; internal static GameObject ultLineIndicator; internal static GameObject ultProjectile; internal static GameObject ultProjectileGhost; internal static GameObject ultProjectileHitEffect; internal static GameObject tpEffect; internal static GameObject tpLocEffect; internal static CharacterCameraParams ultCameraParams; internal static void CreatePrefabs() { //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_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_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_018a: 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_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Expected O, but got Unknown //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0329: 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_0333: 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_0344: 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_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Unknown result type (might be due to invalid IL or missing references) //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Unknown result type (might be due to invalid IL or missing references) //IL_04f2: 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_0117: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_053e: Unknown result type (might be due to invalid IL or missing references) //IL_0543: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Unknown result type (might be due to invalid IL or missing references) //IL_0626: Unknown result type (might be due to invalid IL or missing references) //IL_0697: Unknown result type (might be due to invalid IL or missing references) //IL_069c: Unknown result type (might be due to invalid IL or missing references) //IL_056d: Unknown result type (might be due to invalid IL or missing references) //IL_0572: Unknown result type (might be due to invalid IL or missing references) //IL_07cf: Unknown result type (might be due to invalid IL or missing references) //IL_07fb: Unknown result type (might be due to invalid IL or missing references) //IL_080b: Unknown result type (might be due to invalid IL or missing references) //IL_0810: Unknown result type (might be due to invalid IL or missing references) //IL_087c: Unknown result type (might be due to invalid IL or missing references) //IL_0881: Unknown result type (might be due to invalid IL or missing references) //IL_08af: Unknown result type (might be due to invalid IL or missing references) //IL_08b4: Unknown result type (might be due to invalid IL or missing references) //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_08e0: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Unknown result type (might be due to invalid IL or missing references) //IL_0907: Unknown result type (might be due to invalid IL or missing references) //IL_0911: Unknown result type (might be due to invalid IL or missing references) //IL_0923: Unknown result type (might be due to invalid IL or missing references) //IL_0928: Unknown result type (might be due to invalid IL or missing references) //IL_0971: Unknown result type (might be due to invalid IL or missing references) //IL_0976: Unknown result type (might be due to invalid IL or missing references) //IL_0993: Unknown result type (might be due to invalid IL or missing references) //IL_0998: Unknown result type (might be due to invalid IL or missing references) //IL_09fc: Unknown result type (might be due to invalid IL or missing references) //IL_0724: Unknown result type (might be due to invalid IL or missing references) //IL_0729: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_0797: Unknown result type (might be due to invalid IL or missing references) tpEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressBlinkEffect.prefab").WaitForCompletion(), "XerathTPEffect", false); ParticleSystemRenderer[] componentsInChildren = tpEffect.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val in componentsInChildren) { string name = ((Object)val).name; if (name == "Dash") { ((Renderer)val).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarGolem/matLunarGolemMuzzleFlash.mat").WaitForCompletion(); } if (name == "DashRings") { ((Renderer)val).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/EliteLunar/matEliteLunarDonut.mat").WaitForCompletion(); } if (name == "Cubes") { val.mesh = Assets.MainAssetBundle.LoadAsset<GameObject>("circleMesh").GetComponent<MeshFilter>().mesh; ((Renderer)val).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/EliteLunar/matEliteLunarParticleReplacement.mat").WaitForCompletion(); } if (name == "Flash, White (1)") { ((Renderer)val).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarGolem/matLunarGolemMuzzleFlash.mat").WaitForCompletion(); } } tpEffect.GetComponent<EffectComponent>().soundName = "Play_Xerath_R_Cast2"; ContentAddition.AddEffect(tpEffect); tpLocEffect = PrefabAPI.InstantiateClone(tpEffect, "TPLocEffect", false); ParticleSystem[] componentsInChildren2 = tpLocEffect.GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem val2 in componentsInChildren2) { MainModule main = val2.main; ((MainModule)(ref main)).loop = true; ((MainModule)(ref main)).duration = 0.5f; EmissionModule emission = val2.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(15f); ((MainModule)(ref main)).scalingMode = (ParticleSystemScalingMode)0; } tpLocEffect.transform.localScale = new Vector3(2f, 2f, 4f); Object.Destroy((Object)(object)tpLocEffect.GetComponent<DestroyOnParticleEnd>()); Object.Destroy((Object)(object)tpLocEffect.GetComponent<VFXAttributes>()); Object.Destroy((Object)(object)tpLocEffect.GetComponent<EffectComponent>()); ultLineIndicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/BasicThrowableVisualizer.prefab").WaitForCompletion(), "XerathUltLineIndicator", false); LineRenderer component = ultLineIndicator.GetComponent<LineRenderer>(); component.widthMultiplier = 3f; component.textureMode = (LineTextureMode)0; component.numPositions = 128; BezierCurveLine val3 = ultLineIndicator.AddComponent<BezierCurveLine>(); val3.v0 = new Vector3(0f, 400f, 100f); GameObject val4 = new GameObject("EndTransform"); val4.transform.SetParent(ultLineIndicator.transform); val3.endTransform = val4.transform; ultCameraParams = ScriptableObject.CreateInstance<CharacterCameraParams>(); ultCameraParams.data = new CharacterCameraParamsData { minPitch = BlendableFloat.op_Implicit(-170f), maxPitch = BlendableFloat.op_Implicit(170f), pivotVerticalOffset = BlendableFloat.op_Implicit(111f), idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, -8.18f)), fov = BlendableFloat.op_Implicit(60f) }; blastImpactEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lightning/LightningStrikeImpact.prefab").WaitForCompletion(), "XerathBlastImpactEffect", false); blastImpactEffect.GetComponent<EffectComponent>().soundName = "Play_Xerath_W_Hit"; blastImpactEffect.transform.localScale = Vector3.one * 2.8f; ContentAddition.AddEffect(blastImpactEffect); tracerEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Golem/TracerGolem.prefab").WaitForCompletion(), "XerathTracerEffect", false); tracerEffect.AddComponent<VFXAttributes>(); tracerEffect.GetComponent<EffectComponent>().soundName = "Play_Xerath_Q_Hit"; tracerEffect.AddComponent<eeeee>(); Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarGolem/matLunarGolemMuzzleFlash.mat").WaitForCompletion()); val5.DisableKeyword("VERTEXCOLOR"); ((Renderer)tracerEffect.GetComponentInChildren<ParticleSystemRenderer>()).material = val5; ContentAddition.AddEffect(tracerEffect); tracerEffectBig = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidRaidCrab/TracerVoidRaidCrabTripleBeam.prefab").WaitForCompletion(), "XerathTracerEffectBig", false); Utils.CopyComponent<ShakeEmitter>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherDashEffect.prefab").WaitForCompletion().GetComponent<ShakeEmitter>(), tracerEffectBig); Object.Destroy((Object)(object)((Component)tracerEffectBig.GetComponentInChildren<Decal>()).gameObject); tracerEffectBig.AddComponent<VFXAttributes>(); tracerEffectBig.GetComponentInChildren<Light>().color = Color.cyan; ((Renderer)Array.Find(tracerEffectBig.GetComponentsInChildren<LineRenderer>(), (LineRenderer element) => ((Object)element).name == "Beam1")).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Junk/Mage/matMageLightningLaser.mat").WaitForCompletion(); ParticleSystemRenderer[] componentsInChildren3 = tracerEffectBig.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val6 in componentsInChildren3) { string name2 = ((Object)val6).name; if (name2 == "BeamParticles, Rings") { ((Renderer)val6).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matLightningArm.mat").WaitForCompletion(); } if (name2 == "BeamParticles, Small") { ((Renderer)val6).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarGolem/matLunarGolemMuzzleFlash.mat").WaitForCompletion(); } } ContentAddition.AddEffect(tracerEffectBig); chargeEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/ChargeMageLightningBomb.prefab").WaitForCompletion(), "XerathChargeEffect", false); ((Renderer)chargeEffect.GetComponentInChildren<MeshRenderer>()).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarWisp/matLunarWispMinigunTell.mat").WaitForCompletion(); ((Component)Array.Find(chargeEffect.GetComponentsInChildren<ParticleSystemRenderer>(), (ParticleSystemRenderer element) => ((Object)element).name == "Sparks, Trail (1)")).gameObject.SetActive(false); ultProjectileHitEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/LightningStakeNova.prefab").WaitForCompletion(), "XerathUltProjectileHitEffect", false); ultProjectileHitEffect.GetComponent<EffectComponent>().soundName = "Play_Xerath_R_Hit"; ContentAddition.AddEffect(ultProjectileHitEffect); tpPropjectileHitEffect = PrefabAPI.InstantiateClone(ultProjectileHitEffect, "XerathTPProjectileHitEffect", false); tpPropjectileHitEffect.GetComponent<EffectComponent>().soundName = "Play_Xerath_E_Hit"; ContentAddition.AddEffect(tpPropjectileHitEffect); tpPropjectileGhost = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningboltGhost.prefab").WaitForCompletion(), "XerathTPProjectileGhost", false); Transform val7 = null; Transform val8 = null; Transform[] componentsInChildren4 = tpPropjectileGhost.GetComponentsInChildren<Transform>(true); foreach (Transform val9 in componentsInChildren4) { string name3 = ((Object)val9).name; if (name3 == "Trail,Short") { ((Component)val9).gameObject.SetActive(true); val7 = val9; TrailRenderer component2 = ((Component)val9).GetComponent<TrailRenderer>(); component2.time = 0.3f; ((Renderer)component2).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matLightningArm.mat").WaitForCompletion(); } if (name3 == "Spinner") { val8 = val9; } if (name3 == "Trail,Long") { ((Component)val9).gameObject.SetActive(true); } if (name3 == "Sphere (1)") { ((Renderer)((Component)val9).GetComponent<MeshRenderer>()).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Lightning/matLightningStrike.mat").WaitForCompletion(); } } Transform child = val8.GetChild(0); val7.SetParent(child); val7.localPosition = Vector3.zero; Transform child2 = val8.GetChild(1); GameObject val10 = Object.Instantiate<GameObject>(((Component)val7).gameObject, child2); val10.transform.localPosition = Vector3.zero; tpPropjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningboltBasic.prefab").WaitForCompletion(), "XerathTPProjectile", true); tpPropjectile.AddComponent<XerathProjectileTeleport>(); tpPropjectile.GetComponent<ProjectileImpactExplosion>().impactEffect = tpPropjectileHitEffect; ProjectileController component3 = tpPropjectile.GetComponent<ProjectileController>(); component3.ghostPrefab = tpPropjectileGhost; component3.startSound = "Play_Xerath_E_Mis"; ContentAddition.AddProjectile(tpPropjectile); ultProjectileGhost = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/HermitCrab/HermitCrabBombGhost.prefab").WaitForCompletion(), "XerathUltProjectileGhost", false); ParticleSystemRenderer[] componentsInChildren5 = ultProjectileGhost.GetComponentsInChildren<ParticleSystemRenderer>(); ((Renderer)componentsInChildren5[0]).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matJellyfishLightningLarge.mat").WaitForCompletion(); ((Component)componentsInChildren5[0]).transform.localScale = Vector3.one; ((Renderer)componentsInChildren5[1]).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/LunarWisp/matLunarWispMuzzleBurst.mat").WaitForCompletion(); MeshRenderer componentInChildren = ultProjectileGhost.GetComponentInChildren<MeshRenderer>(); ((Component)componentInChildren).transform.localScale = Vector3.one * 0.7f; ((Renderer)componentInChildren).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/EliteIce/matAffixWhiteSphereExplosion.mat").WaitForCompletion(); TrailRenderer componentInChildren2 = ultProjectileGhost.GetComponentInChildren<TrailRenderer>(); componentInChildren2.time = 0.4f; componentInChildren2.startWidth = 5f; componentInChildren2.endWidth = 1f; ((Renderer)componentInChildren2).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Lightning/matLightningStrike.mat").WaitForCompletion(); componentInChildren2.textureMode = (LineTextureMode)2; ultProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormSeekerProjectile.prefab").WaitForCompletion(), "XerathUltProjectile", true); Object.Destroy((Object)(object)ultProjectile.GetComponent<ProjectileDirectionalTargetFinder>()); Object.Destroy((Object)(object)ultProjectile.GetComponent<ProjectileSteerTowardTarget>()); Object.Destroy((Object)(object)ultProjectile.GetComponent<ProjectileTargetComponent>()); ProjectileImpactExplosion component4 = ultProjectile.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component4).blastRadius = 20f; ((ProjectileExplosion)component4).blastAttackerFiltering = (AttackerFiltering)2; component4.impactEffect = ultProjectileHitEffect; ProjectileController component5 = ultProjectile.GetComponent<ProjectileController>(); component5.ghostPrefab = ultProjectileGhost; component5.shouldPlaySounds = true; component5.startSound = "Play_Xerath_R_Mis"; LoopSoundDef val11 = ScriptableObject.CreateInstance<LoopSoundDef>(); val11.startSoundName = "Play_Xerath_R_Mis"; component5.flightSoundLoop = val11; ultProjectile.AddComponent<ProjectileLinePathing>(); ContentAddition.AddProjectile(ultProjectile); } } internal class CharacterMain : GenericCharacterMain { public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (buttonPressed()) { ((EntityState)this).outer.SetNextState((EntityState)(object)new BaseEmote()); } } private bool buttonPressed() { if (PauseScreenController.instancesList.Count == 0 && ((BaseState)this).isGrounded && ((EntityState)this).characterBody.hasEffectiveAuthority && Input.GetKey((KeyCode)306) && Input.GetKey((KeyCode)51)) { return true; } return false; } } internal class BaseEmote : BaseState { private float emoteDuration = 1f; private uint ID; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Dance"); ID = AkSoundEngine.PostEvent(Sounds.Play_Xerath_Music, ((EntityState)this).gameObject); } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= emoteDuration && ((EntityState)this).isAuthority && ((EntityState)this).inputBank.moveVector != Vector3.zero) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); AkSoundEngine.StopPlayingID(ID); ((EntityState)this).GetModelAnimator().SetTrigger("DanceOver"); } 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)6; } } internal class Primary : BaseSkillState { private GameObject chargeEffectInstance; private float duration; private uint ID; public override void OnEnter() { //IL_0055: 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) ((BaseState)this).OnEnter(); duration = 2f / ((BaseState)this).attackSpeedStat; ((EntityState)this).GetModelAnimator().SetFloat("Primary", ((BaseState)this).attackSpeedStat); ((EntityState)this).PlayAnimation("FullBody, Override", "Primary"); Transform val = ((BaseState)this).FindModelChild("chargeMuzzle"); chargeEffectInstance = Object.Instantiate<GameObject>(Prefabs.chargeEffect, val.position, val.rotation); chargeEffectInstance.transform.parent = val; ScaleParticleSystemDuration component = chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>(); ObjectScaleCurve component2 = chargeEffectInstance.GetComponent<ObjectScaleCurve>(); if (Object.op_Implicit((Object)(object)component)) { component.newDuration = duration; } if (Object.op_Implicit((Object)(object)component2)) { component2.timeMax = duration; } AkSoundEngine.PostEvent(Sounds.Play_Xerath_Q_Cast, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { ID = AkSoundEngine.PostEvent(Sounds.Play_Xerath_Q_Loop, ((EntityState)this).gameObject); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); float charge = Mathf.Clamp01(((EntityState)this).fixedAge / duration); if ((((EntityState)this).fixedAge >= duration || !((EntityState)this).inputBank.skill1.down) && ((EntityState)this).isAuthority) { PrimaryCast primaryCast = new PrimaryCast(); primaryCast.charge = charge; ((EntityState)this).outer.SetNextState((EntityState)(object)primaryCast); } } public override void OnExit() { ((EntityState)this).OnExit(); AkSoundEngine.StopPlayingID(ID); EntityState.Destroy((Object)(object)chargeEffectInstance); } 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)6; } } internal class PrimaryCast : BaseSkillState { public float charge; private float duration; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = 0.65f / ((BaseState)this).attackSpeedStat; ((EntityState)this).GetModelAnimator().SetTrigger("PrimaryEnd"); Fire(); } private void Fire() { //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_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_0044: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0085: 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_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_0115: 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_013f: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageLightningLarge.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "handR", false); if (((EntityState)this).isAuthority) { BulletAttack val = new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject }; Ray aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.falloffModel = (FalloffModel)0; val.stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask; aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; val.procCoefficient = 1f; val.minSpread = 0f; val.maxSpread = 0f; val.bulletCount = 1u; val.smartCollision = true; val.damage = ((EntityState)this).characterBody.damage * Util.Remap(charge, 0f, 1f, 2f, 5.4f); val.force = Util.Remap(charge, 0f, 1f, 500f, 1200f); val.tracerEffectPrefab = ((charge == 1f) ? Prefabs.tracerEffectBig : Prefabs.tracerEffect); val.muzzleName = "gunMuzzle"; val.hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/HitsparkCommandoShotgun.prefab").WaitForCompletion(); val.isCrit = ((BaseState)this).RollCrit(); val.radius = 1.6f; val.maxDistance = Util.Remap(charge, 0f, 1f, 50f, 120f); val.Fire(); } } 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)6; } } internal class Secondary : BaseSkillState { private GameObject areaIndicator; private SecondaryCast state = new SecondaryCast(); public override void OnEnter() { //IL_0023: 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) ((BaseState)this).OnEnter(); areaIndicator = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab); areaIndicator.transform.localScale = Vector3.one * 12f; } public override void Update() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)areaIndicator)) { float num = 1000f; float num2 = 0f; RaycastHit val = default(RaycastHit); if (Physics.Raycast(CameraRigController.ModifyAimRayIfApplicable(((BaseState)this).GetAimRay(), ((EntityState)this).gameObject, ref num2), ref val, num + num2, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { areaIndicator.transform.position = ((RaycastHit)(ref val)).point; areaIndicator.transform.up = ((RaycastHit)(ref val)).normal; } if (state != null) { state.firePosition = areaIndicator.transform.position; } } if (!((EntityState)this).inputBank.skill2.down) { ((EntityState)this).outer.SetNextState((EntityState)(object)state); } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)areaIndicator)) { EntityState.Destroy((Object)(object)areaIndicator); } } 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)6; } } internal class SecondaryCast : BaseSkillState { private float duration; private bool hasFired; public Vector3 firePosition; public override void OnEnter() { //IL_0037: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = 0.75f / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("FullBody, Override", "Secondary", "Secondary", duration); if (firePosition == Vector3.zero) { firePosition = ((EntityState)this).characterBody.footPosition; } EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageLightningLargeWithTrail.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "handR", false); EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageLightningLargeWithTrail.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "handL", false); AkSoundEngine.PostEvent(Sounds.Play_Xerath_W_Cast, ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration * 0.25f && !hasFired) { hasFired = true; Fire(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_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_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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) EffectData val = new EffectData { origin = firePosition, scale = 12f }; EffectManager.SpawnEffect(Prefabs.blastImpactEffect, val, false); Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * 5f, baseForce = 0f, crit = ((BaseState)this).RollCrit(), damageType = (DamageType)8, falloffModel = (FalloffModel)2, procCoefficient = 1f, radius = 12f, position = firePosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/OmniImpactVFXLightningMage.prefab").WaitForCompletion()), teamIndex = ((EntityState)this).teamComponent.teamIndex, damageColorIndex = (DamageColorIndex)10 }.Fire(); ((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)6; } } internal class Special : BaseSkillState { private float duration = 10f; private CharacterCameraParams defaultCameraParams = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/Base/Common/ccpStandard.asset").WaitForCompletion(); private CharacterCameraParams cameraParams = Prefabs.ultCameraParams; public static SkillDef primaryOverride; private CameraParamsOverrideHandle handle; public Vector3 pos; private GameObject areaIndicator; public GameObject lineIndicator; private Transform lineEndTransform; private bool soundPlayed; private GameObject camera; public override void OnEnter() { //IL_003a: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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) ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Ult"); ((EntityState)this).skillLocator.primary.SetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); handle = ((EntityState)this).cameraTargetParams.AddParamsOverride(new CameraParamsOverrideRequest { cameraParamsData = cameraParams.data, priority = 0.1f }, 0.5f); areaIndicator = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab); areaIndicator.transform.localScale = Vector3.one * 12f; lineIndicator = Object.Instantiate<GameObject>(Prefabs.ultLineIndicator, ((EntityState)this).characterBody.corePosition, Quaternion.identity, (Transform)null); lineEndTransform = lineIndicator.transform.GetChild(0); CameraRigController[] array = Object.FindObjectsOfType<CameraRigController>(); foreach (CameraRigController val in array) { if ((Object)(object)val.targetBody == (Object)(object)((EntityState)this).characterBody) { camera = ((Component)val).gameObject; } } if (Object.op_Implicit((Object)(object)camera)) { AkSoundEngine.PostEvent(Sounds.Play_Xerath_R_Cast, ((EntityState)this).gameObject); } } public override void Update() { //IL_0071: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (((EntityState)this).fixedAge >= 0.5f && !soundPlayed) { soundPlayed = true; if (Object.op_Implicit((Object)(object)camera)) { AkSoundEngine.PostEvent(Sounds.Play_Xerath_R_Cast2, ((EntityState)this).gameObject); } } if (!Object.op_Implicit((Object)(object)areaIndicator)) { return; } float num = 1000f; float num2 = 0f; RaycastHit val = default(RaycastHit); if (Physics.Raycast(CameraRigController.ModifyAimRayIfApplicable(((BaseState)this).GetAimRay(), ((EntityState)this).gameObject, ref num2), ref val, num + num2, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { pos = ((RaycastHit)(ref val)).point; areaIndicator.transform.position = ((RaycastHit)(ref val)).point; areaIndicator.transform.up = ((RaycastHit)(ref val)).normal; if (Object.op_Implicit((Object)(object)lineEndTransform)) { lineEndTransform.position = ((RaycastHit)(ref val)).point; } } } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((BaseCharacterController)((EntityState)this).characterMotor).Motor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } HandlePrimaryInput(((EntityState)this).skillLocator.primary, ref ((EntityState)this).inputBank.skill1); if (((EntityState)this).skillLocator.primary.stock == 0 && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void HandlePrimaryInput(GenericSkill skillSlot, ref ButtonState buttonState) { if (buttonState.down && Object.op_Implicit((Object)(object)skillSlot) && (!skillSlot.mustKeyPress || !buttonState.hasPressBeenClaimed) && skillSlot.ExecuteIfReady()) { buttonState.hasPressBeenClaimed = true; } } public override void OnExit() { //IL_0027: 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) ((EntityState)this).OnExit(); EntityState.Destroy((Object)(object)areaIndicator); EntityState.Destroy((Object)(object)lineIndicator); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(handle, 0.5f); ((EntityState)this).skillLocator.primary.UnsetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); ((EntityState)this).GetModelAnimator().SetTrigger("SpecialEnd"); } 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 Teleport : BaseSkillState { private XerathTPHandler tpHandler; private float duration = 0.5f; private bool playedVFX; public override void OnEnter() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); tpHandler = ((EntityState)this).GetComponent<XerathTPHandler>(); ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 0f); if (((EntityState)this).isAuthority) { TeleportHelper.TeleportBody(((EntityState)this).characterBody, tpHandler.pos); Transform modelTransform = ((EntityState)this).GetModelTransform(); TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val.duration = 0.3f; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashBright"); val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>()); TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val2.duration = 0.4f; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashExpanded"); val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>()); } AkSoundEngine.PostEvent(Sounds.Play_Xerath_R_Cast2, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)tpHandler)) { tpHandler.UnSet(); } ((EntityState)this).PlayAnimation("FullBody, Override", "Secondary", "Secondary", duration); } public override void FixedUpdate() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.2f && !playedVFX) { playedVFX = true; EffectData val = new EffectData(); val.rotation = Util.QuaternionSafeLookRotation(Vector3.up); val.origin = ((EntityState)this).characterBody.corePosition; EffectManager.SpawnEffect(Prefabs.tpEffect, val, false); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } } internal class UltPrimary : BaseSkillState { private float duration; private float baseDuration = 0.6f; private GameObject projectilePrefab = Prefabs.ultProjectile; public override void OnEnter() { //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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; Special special = ((EntityState)this).GetComponent<EntityStateMachine>().state as Special; Vector3 val = Vector3.zero; if (special != null && special.pos != val) { val = special.pos; ProjectileLinePathing component = projectilePrefab.GetComponent<ProjectileLinePathing>(); component.positions = special.lineIndicator.GetComponent<BezierCurveLine>().vertexList; component.speed = Vector3.Distance(((EntityState)this).characterBody.corePosition, val) * 2400f; } if (val == Vector3.zero && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } AkSoundEngine.PostEvent(Sounds.Play_Xerath_R_Mis_Cast, ((EntityState)this).gameObject); Fire(); } private void Fire() { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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_00ef: Unknown result type (might be due to invalid IL or missing references) EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageLightning.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "handR", false); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * 8f; val.damageTypeOverride = (DamageType)32; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; Ray aimRay = ((BaseState)this).GetAimRay(); val.position = ((Ray)(ref aimRay)).origin; val.procChainMask = default(ProcChainMask); val.projectilePrefab = projectilePrefab; val.rotation = Quaternion.LookRotation(Vector3.up); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } 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(); } 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 Utility : BaseSkillState { private float duration; private bool hasFired; private HurtBox target; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = 0.3f / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("FullBody, Override", "Utility", "Utility", duration); AkSoundEngine.PostEvent(Sounds.Play_Xerath_E_Cast, ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration * 0.25f && !hasFired) { hasFired = true; Fire(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: 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_00c6: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageLightning.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "handR", false); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * 4f; val.damageTypeOverride = (DamageType)32; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; Ray aimRay = ((BaseState)this).GetAimRay(); val.position = ((Ray)(ref aimRay)).origin; val.procChainMask = default(ProcChainMask); val.projectilePrefab = Prefabs.tpPropjectile; aimRay = ((BaseState)this).GetAimRay(); val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } public override void OnExit() { ((EntityState)this).OnExit(); } 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; } } internal class Sounds { public static readonly uint Play_Xerath_Music = 543877628u; public static readonly uint Play_Xerath_W_Cast = 1283839468u; public static readonly uint Play_Xerath_R_Mis = 1702730707u; public static readonly uint Play_Xerath_R_Cast2 = 1728800823u; public static readonly uint Play_Xerath_R_Hit = 1770282437u; public static readonly uint Play_Xerath_W_Hit = 2052577924u; public static readonly uint Play_Xerath_E_Cast = 2108314866u; public static readonly uint Play_Xerath_E_Mis = 2283413592u; public static readonly uint Play_Xerath_Q_Loop = 2458222157u; public static readonly uint Play_Xerath_E_Hit = 3022467350u; public static readonly uint Play_Xerath_Q_Hit = 3095307402u; public static readonly uint Play_Xerath_Q_Cast = 3486245502u; public static readonly uint Play_Xerath_R_Cast = 3616886535u; public static readonly uint Play_Xerath_R_Mis_Cast = 3878380363u; } internal class Utils { public static GameObject NewDisplayModel(GameObject model, string name) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(model, name, false); ((Behaviour)val.GetComponentInChildren<CharacterModel>()).enabled = false; SkinnedMeshRenderer[] componentsInChildren = val.GetComponentsInChildren<SkinnedMeshRenderer>(); for (int i = 0; i < componentsInChildren.Length; i++) { ((Renderer)componentsInChildren[i]).material.shader = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGStandard.shader").WaitForCompletion(); ((Renderer)componentsInChildren[i]).material.shaderKeywords = null; } return val; } internal static Sprite CreateSprite(Texture2D tex) { //IL_001a: 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) return Sprite.Create(tex, new Rect(0f, 0f, (float)((Texture)tex).width, (float)((Texture)tex).height), new Vector2(0.5f, 0.5f), 128f); } internal static SkinDefInfo CreateNewSkinDefInfo(RendererInfo[] childList, GameObject rootObject, string skinName, string objectToEnable, RendererInfo[] rendererInfos) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_006b: 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_00da: 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_00df: Unknown result type (might be due to invalid IL or missing references) SkinDefInfo result = default(SkinDefInfo); result.BaseSkins = Array.Empty<SkinDef>(); result.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0]; result.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0]; List<GameObjectActivation> list = new List<GameObjectActivation>(); foreach (RendererInfo val in childList) { GameObjectActivation val2 = default(GameObjectActivation); val2.gameObject = ((Component)val.renderer).gameObject; val2.shouldActivate = true; GameObjectActivation item = val2; list.Add(item); } result.GameObjectActivations = list.ToArray(); result.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin"); result.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0]; result.Name = skinName; result.NameToken = skinName; result.RendererInfos = rendererInfos; result.RootObject = rootObject; result.UnlockableDef = null; return result; } 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