Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Zeri v1.0.4
Zeri.dll
Decompiled 11 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.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EntityStates; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Utils; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Zeri")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Zeri")] [assembly: AssemblyTitle("Zeri")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Zeri; internal class Assets { public static AssetBundle MainAssetBundle; public static T Load<T>(string name) where T : Object { return MainAssetBundle.LoadAsset<T>(name); } public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Zeri.zeriassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Zeri.Zeri.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class OrbEffectParent : MonoBehaviour { public Transform startTransform; private OrbEffect orb; public float duration = 0.3f; private void Awake() { orb = ((Component)this).GetComponent<OrbEffect>(); } private void Update() { //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) if (Object.op_Implicit((Object)(object)orb) && Object.op_Implicit((Object)(object)startTransform)) { orb.duration = duration; orb.startPosition = startTransform.position; } } } internal class ZeriBehaviour : HuntressTracker { private Animator animator; private CharacterBody body; private SkillLocator skillLocator; private SkillDef primary; public static SkillDef zap; private GameObject chargeBar; private TextMeshProUGUI currentCharge; private TextMeshProUGUI fullCharge; private Image barImage; [SerializeField] private float chargeValue = 0f; private float maxChargeValue = 1f; private bool barSetupDone; public bool canExecute = true; public float passiveChargeTime = 12f; public bool dashing; private ChildLocator childLocator; private SkateSparks skate; internal bool maxCharge => chargeValue >= maxChargeValue; public float currentChargeValue => chargeValue; public void AddCharge(float value) { if (chargeValue >= 1f) { return; } if (value + chargeValue >= 1f) { chargeValue = 1f; if (Object.op_Implicit((Object)(object)zap) && Object.op_Implicit((Object)(object)body)) { body.skillLocator.primary.SetSkillOverride((object)this, zap, (SkillOverridePriority)4); AkSoundEngine.PostEvent(Sounds.Play_Zeri_Zap_Gain, ((Component)this).gameObject); } } chargeValue += value; } public void RemoveCharge(float value) { chargeValue -= value; } private void OnEnable() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown ((HuntressTracker)this).OnEnable(); base.maxTrackingDistance = 70f; body = ((Component)this).GetComponent<CharacterBody>(); skillLocator = body.skillLocator; HUD.Update += new hook_Update(HUD_Update); } private void HUD_Update(orig_Update orig, HUD self) { //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_0664: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (Object.op_Implicit((Object)(object)body) && !PauseManager.isPaused) { if (!Object.op_Implicit((Object)(object)skate) && Object.op_Implicit((Object)(object)body.modelLocator) && Object.op_Implicit((Object)(object)body.modelLocator.modelTransform)) { childLocator = ((Component)body.modelLocator.modelTransform).GetComponent<ChildLocator>(); skate = ((Component)body.modelLocator.modelTransform).GetComponent<SkateSparks>(); } if (Object.op_Implicit((Object)(object)skate) && Object.op_Implicit((Object)(object)animator)) { bool flag = body.isSprinting || dashing || animator.GetFloat("ultSpeed") == 1f; ((Component)skate.leftParticleSystem).gameObject.SetActive(flag); ((Component)skate.rightParticleSystem).gameObject.SetActive(flag); ((Behaviour)skate).enabled = flag; } if (!Object.op_Implicit((Object)(object)animator) && Object.op_Implicit((Object)(object)body.modelLocator) && Object.op_Implicit((Object)(object)body.modelLocator.modelTransform)) { animator = ((Component)body.modelLocator.modelTransform).GetComponent<Animator>(); } else { bool flag2 = body.HasBuff(Prefabs.ult); animator.SetFloat("ultSpeed", (float)(flag2 ? 1 : 0)); } if (!Object.op_Implicit((Object)(object)skillLocator)) { skillLocator = body.skillLocator; } else if (!Object.op_Implicit((Object)(object)primary)) { primary = skillLocator.primary.defaultSkillDef; } if (Object.op_Implicit((Object)(object)primary)) { bool flag3 = body.HasBuff(Prefabs.ult); bool flag4 = body.HasBuff(Prefabs.dash); primary.icon = ((!flag3) ? (body.HasBuff(Prefabs.dash) ? Prefabs.burst2 : Prefabs.burst) : (flag4 ? Prefabs.burstR2 : Prefabs.burstR)); } if (Object.op_Implicit((Object)(object)skillLocator)) { base.indicator.active = (Object)(object)skillLocator.primary.skillDef == (Object)(object)zap; } if (dashing || (body.inputBank.moveVector != Vector3.zero && body.moveSpeed > Mathf.Epsilon)) { AddCharge(maxChargeValue / passiveChargeTime * Time.deltaTime); } } chargeValue = Mathf.Clamp(chargeValue, 0f, maxChargeValue); if (Object.op_Implicit((Object)(object)barImage)) { barImage.fillAmount = chargeValue / maxChargeValue; } if (Object.op_Implicit((Object)(object)currentCharge) && ((TMP_Text)currentCharge).text != chargeValue.ToString()) { ((TMP_Text)currentCharge).text = Mathf.CeilToInt(chargeValue * 100f).ToString(); } if (!Object.op_Implicit((Object)(object)self.targetBodyObject) || !((Object)(object)self.targetBodyObject == (Object)(object)((Component)this).gameObject) || !Object.op_Implicit((Object)(object)self.mainUIPanel) || !Util.HasEffectiveAuthority(self.targetBodyObject.GetComponent<NetworkIdentity>()) || Object.op_Implicit((Object)(object)chargeBar)) { return; } HealthBar componentInChildren = self.mainUIPanel.GetComponentInChildren<HealthBar>(); if (!Object.op_Implicit((Object)(object)componentInChildren) || !Object.op_Implicit((Object)(object)((Component)componentInChildren).gameObject)) { return; } Image[] componentsInChildren = ((Component)componentInChildren).gameObject.GetComponentsInChildren<Image>(); if (!barSetupDone) { for (int i = 0; i < componentsInChildren.Length; i++) { if (componentsInChildren.Length == 5) { barSetupDone = true; } } } if (!barSetupDone) { return; } chargeBar = Object.Instantiate<GameObject>(((Component)componentInChildren).gameObject, ((Component)componentInChildren).gameObject.transform.parent); ((Object)chargeBar).name = "ChargeBar"; Object.Destroy((Object)(object)chargeBar.GetComponent<HealthBar>()); TextMeshProUGUI[] componentsInChildren2 = chargeBar.GetComponentsInChildren<TextMeshProUGUI>(); for (int j = 0; j < componentsInChildren2.Length; j++) { if (Object.op_Implicit((Object)(object)componentsInChildren2[j]) && Object.op_Implicit((Object)(object)((Component)componentsInChildren2[j]).gameObject)) { if (((Object)((Component)componentsInChildren2[j]).gameObject).name == "CurrentHealthText") { currentCharge = componentsInChildren2[j]; ((TMP_Text)currentCharge).text = "0"; } if (((Object)((Component)componentsInChildren2[j]).gameObject).name == "FullHealthText") { fullCharge = componentsInChildren2[j]; ((TMP_Text)fullCharge).text = "100"; } } } Image[] componentsInChildren3 = chargeBar.GetComponentsInChildren<Image>(); for (int k = 0; k < componentsInChildren3.Length; k++) { if (Object.op_Implicit((Object)(object)componentsInChildren3[k]) && Object.op_Implicit((Object)(object)((Component)componentsInChildren3[k]).gameObject)) { if ((Object)(object)componentsInChildren3[k] != (Object)(object)componentsInChildren3[3] && (Object)(object)componentsInChildren3[k] != (Object)(object)componentsInChildren3[0]) { Object.Destroy((Object)(object)((Component)componentsInChildren3[k]).gameObject); } if ((Object)(object)componentsInChildren3[k] == (Object)(object)componentsInChildren3[3]) { barImage = componentsInChildren3[k]; ((Graphic)barImage).color = new Color(0.8156863f, 0.6313726f, 0.972549f); barImage.type = (Type)3; barImage.fillMethod = (FillMethod)0; barImage.fillCenter = false; } } } } private void OnDisable() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown ((HuntressTracker)this).OnDisable(); HUD.Update -= new hook_Update(HUD_Update); if (Object.op_Implicit((Object)(object)chargeBar)) { Object.Destroy((Object)(object)chargeBar); } } } internal class ZeriModelBehaviour : MonoBehaviour { private uint ID; public GameObject props; public void Footslide() { AkSoundEngine.PostEvent(Sounds.Play_Zeri_SlideStep, ((Component)this).gameObject); } public void PlayRecall() { ID = AkSoundEngine.PostEvent(Sounds.Play_Zeri_Recall, ((Component)this).gameObject); } public void HideProps() { props.SetActive(false); } private void OnDisable() { AkSoundEngine.StopPlayingID(ID); } } internal class ZeriProjectileBehaviour : MonoBehaviour, IProjectileImpactBehavior { private ProjectileController projectileController; private ProjectileDamage projectileDamage; private void Awake() { projectileController = ((Component)this).GetComponent<ProjectileController>(); projectileDamage = ((Component)this).GetComponent<ProjectileDamage>(); } public void OnProjectileImpact(ProjectileImpactInfo impactInfo) { //IL_0001: 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_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_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_00ba: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) Collider collider = impactInfo.collider; if (Object.op_Implicit((Object)(object)collider) && !Object.op_Implicit((Object)(object)((Component)collider).GetComponent<HurtBox>())) { float num = 180f; CharacterBody component = projectileController.owner.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && component.hasEffectiveAuthority) { new BulletAttack { stopperMask = LayerMask.op_Implicit(0), maxDistance = num, owner = ((Component)component).gameObject, weapon = ((Component)component).gameObject, origin = ((Component)this).transform.position, aimVector = ((Component)this).transform.forward, minSpread = 0f, maxSpread = 0f, bulletCount = 1u, damage = (Object.op_Implicit((Object)(object)component) ? (component.damage * 3.6f) : projectileDamage.damage), force = 1550f, tracerEffectPrefab = null, muzzleName = "gunMuzzle", hitEffectPrefab = Prefabs.Load<GameObject>("RoR2/Base/Common/VFX/OmniImpactVFX.prefab"), isCrit = true, radius = 2.5f, procCoefficient = 1f, smartCollision = true, damageType = DamageTypeCombo.op_Implicit((DamageType)8) }.Fire(); } EffectData val = new EffectData { origin = ((Component)this).transform.position + ((Component)this).transform.forward * num, start = ((Component)this).transform.position }; EffectManager.SpawnEffect(Prefabs.beamTracer, val, false); } } } 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 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { int buffCount = sender.GetBuffCount(Prefabs.haste); if (buffCount > 0) { args.moveSpeedMultAdd += 0.05f * (float)buffCount; } if (sender.HasBuff(Prefabs.ult)) { args.attackSpeedMultAdd += 0.3f; args.moveSpeedMultAdd += 0.15f; } } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Invalid comparison between Unknown and I4 //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Invalid comparison between Unknown and I4 //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo); bool flag = (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 64; bool flag2 = (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 524352; if (!(Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)damageInfo.attacker.GetComponent<ZeriBehaviour>()) && flag) && (!flag2 || ((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)3))) { return; } damageInfo.damageType &= DamageTypeCombo.op_Implicit((DamageType)(-65)); CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component) || !component.HasBuff(Prefabs.ult)) { return; } if (flag2 && Object.op_Implicit((Object)(object)component.healthComponent) && component.healthComponent.alive) { if (self.shield > 0f) { component.healthComponent.AddBarrier(self.Networkshield); self.Networkshield = 0f; } if (self.barrier > 0f) { component.healthComponent.AddBarrier(self.Networkbarrier); self.Networkbarrier = 0f; } } int num = 3; int itemCount = component.inventory.GetItemCount(Items.EquipmentMagazineVoid); if (itemCount > 0) { num += 2 + (itemCount - 1); } float damageValue = damageInfo.damage / (float)num; TeamIndex teamIndex = component.teamComponent.teamIndex; ZapOrb zapOrb = new ZapOrb(); ((Orb)zapOrb).origin = damageInfo.position; zapOrb.damageValue = damageValue; zapOrb.isCrit = damageInfo.crit; zapOrb.bouncesRemaining = num; zapOrb.teamIndex = teamIndex; zapOrb.attacker = damageInfo.attacker; zapOrb.bouncedObjects = new List<HealthComponent> { self }; zapOrb.procChainMask = damageInfo.procChainMask; ((ProcChainMask)(ref zapOrb.procChainMask)).AddProc((ProcType)3); zapOrb.procCoefficient = 0f; zapOrb.damageColorIndex = (DamageColorIndex)0; zapOrb.range = 20f; HurtBox val = zapOrb.PickNextTarget(damageInfo.position); if (Object.op_Implicit((Object)(object)val)) { ((Orb)zapOrb).target = val; } OrbManager.instance.AddOrb((Orb)(object)zapOrb); int num2 = ((!damageInfo.crit) ? 1 : 3); for (int i = 0; i < num2; i++) { component.AddTimedBuff(Prefabs.haste, 4f, (int)Mathf.Clamp(component.level, 4f, 99f)); component.AddTimedBuff(Prefabs.ult, 4f); } if (flag2 && self.combinedHealth / self.fullCombinedHealth <= 0.15f) { self.Suicide(damageInfo.attacker, damageInfo.attacker, default(DamageTypeCombo)); } } } [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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Dragonyck.Zeri", "Zeri", "1.0.4")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.Zeri"; public const string MODNAME = "Zeri"; public const string VERSION = "1.0.4"; public const string SURVIVORNAME = "Zeri"; public const string SURVIVORNAMEKEY = "ZERI"; public static GameObject characterPrefab; public static readonly Color characterColor = new Color(0.8156863f, 0.6313726f, 0.972549f); private void Awake() { Assets.PopulateAssets(); Prefabs.CreatePrefabs(); CreatePrefab(); RegisterStates(); RegisterCharacter(); Hook.Hooks(); } private void Update() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Prefabs.skateMat)) { Prefabs.skateMat.SetTextureOffset("_MainTex", new Vector2(Time.time * -4f, 0f)); } } internal static void CreatePrefab() { //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Expected O, but got Unknown //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Expected O, but got Unknown //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_0463: Unknown result type (might be due to invalid IL or missing references) //IL_0595: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_0638: Unknown result type (might be due to invalid IL or missing references) //IL_063d: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Unknown result type (might be due to invalid IL or missing references) //IL_070f: Unknown result type (might be due to invalid IL or missing references) //IL_0820: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Unknown result type (might be due to invalid IL or missing references) //IL_0775: Unknown result type (might be due to invalid IL or missing references) //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_0961: Unknown result type (might be due to invalid IL or missing references) //IL_09fe: Unknown result type (might be due to invalid IL or missing references) //IL_0a03: Unknown result type (might be due to invalid IL or missing references) //IL_0a26: Unknown result type (might be due to invalid IL or missing references) //IL_0a2b: Unknown result type (might be due to invalid IL or missing references) //IL_0a59: Unknown result type (might be due to invalid IL or missing references) //IL_0a5e: Unknown result type (might be due to invalid IL or missing references) GameObject val = Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoBody.prefab"); characterPrefab = PrefabAPI.InstantiateClone(val, "ZeriBody", true); characterPrefab.AddComponent<ZeriBehaviour>(); 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>("Zeri"); ChildLocator component = val2.GetComponent<ChildLocator>(); val2.AddComponent<ZeriModelBehaviour>().props = ((Component)component.FindChild("props")).gameObject; GameObject val3 = PrefabAPI.InstantiateClone(((Component)((Component)Prefabs.Load<GameObject>("RoR2/Base/Toolbot/ToolbotBody.prefab").GetComponent<ModelLocator>().modelTransform).GetComponent<SkateSparks>().leftParticleSystem).gameObject, "ZeriSprintSparks", false); val3.transform.SetParent(component.FindChild("foot.r")); val3.transform.localPosition = Vector3.right * -0.1f; val3.transform.localRotation = Quaternion.Euler(-90f, 90f, 0f); ((Renderer)val3.GetComponent<ParticleSystemRenderer>()).material = Prefabs.Load<Material>("RoR2/Base/Bandit2/matBandit2SlashBlade.mat"); TrailRenderer val4 = val3.AddComponent<TrailRenderer>(); val4.time = 0.12f; val4.widthMultiplier = 0.4f; val4.endWidth = 0f; Prefabs.skateMat = Object.Instantiate<Material>(Prefabs.Load<Material>("RoR2/Base/artifactworld/matArtifactShellTrail.mat")); Prefabs.skateMat.SetFloat("_Boost", 6f); Prefabs.skateMat.SetTexture("_RemapTex", (Texture)(object)Prefabs.Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampArchWisp.png")); ((Renderer)val4).material = Prefabs.skateMat; GameObject val5 = Object.Instantiate<GameObject>(val3); val5.transform.SetParent(component.FindChild("foot.l")); val5.transform.localPosition = Vector3.right * 0.1f; val5.transform.localRotation = Quaternion.Euler(90f, 90f, 0f); SkateSparks val6 = val2.AddComponent<SkateSparks>(); val6.maxStress = 16f; val6.minStressForEmission = 4f; val6.overspeedStressCoefficient = 40f; val6.accelerationStressCoefficient = 8f; val6.perpendicularTravelStressCoefficient = 22f; val6.maxEmissionRate = 400f; val6.landingStress = 4; val6.rightParticleSystem = val3.GetComponent<ParticleSystem>(); val6.leftParticleSystem = val5.GetComponent<ParticleSystem>(); GameObject val7 = new GameObject("ModelBase"); val7.transform.parent = characterPrefab.transform; val7.transform.localPosition = new Vector3(0f, -0.94f, 0f); val7.transform.localRotation = Quaternion.identity; val7.transform.localScale = new Vector3(1f, 1f, 1f); GameObject val8 = new GameObject("AimOrigin"); val8.transform.parent = val7.transform; val8.transform.localPosition = new Vector3(0f, 1.4f, 0f); val8.transform.localRotation = Quaternion.identity; val8.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val7.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component2 = characterPrefab.GetComponent<CharacterDirection>(); component2.moveVector = Vector3.zero; component2.targetTransform = val7.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 = "ZeriBody"; component3.baseNameToken = "ZERI_NAME"; component3.subtitleNameToken = "ZERI_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 = val8.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 = val7.transform; component7.dontReleaseModelOnDeath = false; component7.autoUpdateModelTransform = true; component7.dontDetatchFromParent = false; component7.noCorpse = false; component7.normalizeToFloor = false; component7.preserveModel = false; CharacterModel val9 = val2.GetComponent<CharacterModel>(); if (!Object.op_Implicit((Object)(object)val9)) { val9 = val2.AddComponent<CharacterModel>(); } SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(true); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren[i], defaultMaterial = ((((Object)componentsInChildren[i]).name == "ult_hair") ? Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture, characterColor, 2f) : Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture)), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] array = list.ToArray(); val9.body = component3; val9.baseRendererInfos = array; val9.autoPopulateLightInfos = true; val9.invisibilityCount = 0; val9.temporaryOverlays = new List<TemporaryOverlayInstance>(); val9.mainSkinnedMeshRenderer = componentsInChildren[0]; GameObject gameObject = ((Component)transform).gameObject; ModelSkinController val10 = gameObject.AddComponent<ModelSkinController>(); LanguageAPI.Add("ZERIBODY_DEFAULT_SKIN_NAME", "Withered Rose"); val10.skins = (SkinDef[])(object)new SkinDef[1] { Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "ZERIBODY_DEFAULT_SKIN_NAME", "base", array)) }; HealthComponent component8 = characterPrefab.GetComponent<HealthComponent>(); component8.health = component3.baseMaxHealth; component8.shield = 0f; component8.barrier = 0f; component8.magnetiCharge = 0f; component8.body = null; component8.dontShowHealthbar = false; component8.globalDeathEventChanceCoefficient = 1f; SfxLocator component9 = characterPrefab.GetComponent<SfxLocator>(); component9.deathSound = "Play_ui_player_death"; component9.barkSound = ""; component9.openSound = ""; component9.landingSound = "Play_char_land"; component9.fallDamageSound = "Play_char_land_fall_damage"; component9.aliveLoopStart = ""; component9.aliveLoopStop = ""; characterPrefab.GetComponent<Rigidbody>().mass = 100f; Collider[] componentsInChildren2 = val2.GetComponentsInChildren<Collider>(); HurtBoxGroup val11 = val2.AddComponent<HurtBoxGroup>(); List<HurtBox> list2 = new List<HurtBox>(); Collider[] array2 = componentsInChildren2; foreach (Collider val12 in array2) { HurtBox val13 = ((Component)val12).gameObject.AddComponent<HurtBox>(); ((Component)val13).gameObject.layer = LayerIndex.entityPrecise.intVal; val13.healthComponent = component8; val13.isBullseye = true; val13.damageModifier = (DamageModifier)0; val13.hurtBoxGroup = val11; val13.indexInGroup = 0; val11.mainHurtBox = val13; val11.bullseyeCount = 1; list2.Add(val13); } val11.hurtBoxes = list2.ToArray(); KinematicCharacterMotor component10 = characterPrefab.GetComponent<KinematicCharacterMotor>(); component10.CharacterController = (ICharacterController)(object)component4; component10.playerCharacter = true; FootstepHandler val14 = val2.AddComponent<FootstepHandler>(); val14.baseFootstepString = "Play_player_footstep"; val14.sprintFootstepOverrideString = ""; val14.enableFootstepDust = true; val14.footstepDustPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/GenericFootstepDust.prefab").WaitForCompletion(); EntityStateMachine component11 = ((Component)component3).GetComponent<EntityStateMachine>(); component11.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component12 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component12.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component12.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); Utils.NewStateMachine<Idle>(characterPrefab, "Ult"); NetworkStateMachine component13 = ((Component)component3).GetComponent<NetworkStateMachine>(); component13.stateMachines = ((Component)component3).GetComponents<EntityStateMachine>(); 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) 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 she left."; string text3 = "..and so she vanished."; LanguageAPI.Add("ZERI_NAME", "Zeri"); LanguageAPI.Add("ZERI_DESCRIPTION", text); LanguageAPI.Add("ZERI_SUBTITLE", "Spark of Zaun"); LanguageAPI.Add("ZERI_OUTRO", text2); LanguageAPI.Add("ZERI_FAIL", text3); SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>(); val.cachedName = "ZERI_NAME"; val.unlockableDef = null; val.descriptionToken = "ZERI_DESCRIPTION"; val.primaryColor = characterColor; val.bodyPrefab = characterPrefab; val.displayPrefab = Utils.NewDisplayModel(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "ZeriDisplay"); val.outroFlavorToken = "ZERI_OUTRO"; val.desiredSortPosition = 0.2f; val.mainEndingEscapeFailureFlavorToken = "ZERI_FAIL"; ContentAddition.AddSurvivorDef(val); SkillSetup(); GameObject val2 = PrefabAPI.InstantiateClone(Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoMonsterMaster.prefab"), "ZeriMaster", 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) bool flag = default(bool); ContentAddition.AddEntityState<BaseZeriState>(ref flag); ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<Zap>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<UtilityEnd>(ref flag); ContentAddition.AddEntityState<Special>(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("ZERI_PASSIVE_NAME", "Living Battery"); LanguageAPI.Add("ZERI_PASSIVE_DESCRIPTION", "Zeri builds up <color=#d0a1f8>charge</color> while moving, and <color=#d0a1f8>10 charge</color> every time she casts <style=cIsDamage>Burst Fire</style>. At full charge, Zeri's next attack is empowered to Zap. Zap deals <style=cIsDamage>340% damage</style> to a targetted enemy, instantly killing them if their health is below <style=cIsDamage>15%</style>. Additionally, Zap <style=cIsHealing>steals</style> barrier as well as shield granting barrier instead."); component.passiveSkill.enabled = true; component.passiveSkill.skillNameToken = "ZERI_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "ZERI_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("zerip"); } private void PrimarySetup() { //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_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("ZERI_M1", "Burst Fire"); LanguageAPI.Add("ZERI_M1_DESCRIPTION", "Zeri fires a burst of 7 rounds in the target direction that deal <style=cIsDamage>280% damage</style>."); 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 = false; val.rechargeStock = 0; val.requiredStock = 0; val.stockToConsume = 0; val.icon = Prefabs.burst; val.skillDescriptionToken = "ZERI_M1_DESCRIPTION"; val.skillName = "ZERI_M1"; val.skillNameToken = "ZERI_M1"; ContentAddition.AddSkillDef(val); component.primary = Utils.NewGenericSkill(characterPrefab, val); LanguageAPI.Add("ZERI_M1_ZAP", "Zap"); LanguageAPI.Add("ZERI_M1_ZAP_DESCRIPTION", "Zap deals <style=cIsDamage>340% damage</style> to a targetted enemy, instantly killing them if their health is below <style=cIsDamage>15%</style>. Additionally, Zap <style=cIsHealing>steals</style> barrier as well as shield granting barrier instead."); val = (SkillDef)(object)ScriptableObject.CreateInstance<ZapSkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Zap)); 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 = false; val.rechargeStock = 0; val.requiredStock = 0; val.stockToConsume = 0; val.icon = Prefabs.snap2; val.skillDescriptionToken = "ZERI_M1_DESCRIPTION"; val.skillName = "ZERI_M1"; val.skillNameToken = "ZERI_M1"; ZeriBehaviour.zap = val; } 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("ZERI_M2", "Ultrashock Laser"); LanguageAPI.Add("ZERI_M2_DESCRIPTION", "Zeri fires an electric pulse in the target direction that deals <style=cIsDamage>500% damage</style> to the first enemy hit and <style=cIsDamage>slows</style>. If it hits terrain or is cast near terrain or enemies, it transforms into a large beam and deals <style=cIsDamage>critical</style> damage."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Secondary)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 1; val.baseRechargeInterval = 5f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)1; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("zeriw"); val.skillDescriptionToken = "ZERI_M2_DESCRIPTION"; val.skillName = "ZERI_M2"; val.skillNameToken = "ZERI_M2"; ContentAddition.AddSkillDef(val); component.secondary = Utils.NewGenericSkill(characterPrefab, val); } private void UtilitySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("ZERI_UTIL", "Spark Surge"); LanguageAPI.Add("ZERI_UTIL_DESCRIPTION", "Zeri dashes in the target direction, going up any walls that don't have sharp angles. Press again to cancel. Zeri gains Spark Surge buff for <style=cIsUtility>5s</style>, refreshing during the dash, it makes <style=cIsDamage>Burst Fire</style> fire <style=cIsDamage>piercing</style> rounds, and <style=cIsDamage>Ultrashock Laser</style> will always fire beams instead."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Utility)); val.activationStateMachineName = "Slide"; val.baseMaxStock = 1; val.baseRechargeInterval = 6f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = false; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Prefabs.dashSprite; val.skillDescriptionToken = "ZERI_UTIL_DESCRIPTION"; val.skillName = "ZERI_UTIL"; val.skillNameToken = "ZERI_UTIL"; ContentAddition.AddSkillDef(val); component.utility = Utils.NewGenericSkill(characterPrefab, val); } private void SpecialSetup() { //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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("ZERI_OVERCHARGED_KEYWORD", "<style=cKeywordName>[OVERCHARGED]</style><style=cSub><style=cIsDamage>+30% attack speed</style>, <style=cIsDamage>+15% movement speed</style>."); LanguageAPI.Add("ZERI_HYPERCHARGED_KEYWORD", "<style=cKeywordName>[HYPERCHARGED]</style><style=cSub><style=cIsDamage>+5% movement speed</style>. Stacks up to a minimum of 4 and a maximum of the player's <style=cIsDamage>level</style>."); LanguageAPI.Add("ZERI_SPEC", "Lightning Crash"); LanguageAPI.Add("ZERI_SPEC_DESCRIPTION", "Zeri discharges an electric nova that deals <style=cIsDamage>700% damage</style> to nearby enemies, also receiving <style=cIsDamage>OVERCHARGED</style> for <style=cIsUtility>8s</style>. During <style=cIsDamage>OVERCHARGED</style>, <style=cIsDamage>Burst Fire</style> and <style=cIsDamage>Zap</style> are empowered to chain their hits to up to 4 subsequential targets dealing <style=cIsDamage>25%</style> of their damage to each target. <style=cIsDamage>Burst Fire</style> also gets <style=cIsDamage>+20%</style> fire rate and instead fire 3 rounds. Chain hits grant <style=cIsDamage>HYPERCHARGED</style> stacks."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Special)); val.activationStateMachineName = "Ult"; val.baseMaxStock = 1; val.baseRechargeInterval = 12f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)1; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = Prefabs.ultSprite; val.skillDescriptionToken = "ZERI_SPEC_DESCRIPTION"; val.skillName = "ZERI_SPEC"; val.skillNameToken = "ZERI_SPEC"; val.keywordTokens = new string[2] { "ZERI_OVERCHARGED_KEYWORD", "ZERI_HYPERCHARGED_KEYWORD" }; ContentAddition.AddSkillDef(val); component.special = Utils.NewGenericSkill(characterPrefab, val); } } internal class Prefabs { internal static GameObject projectile; internal static GameObject projectileGhost; internal static GameObject tracer; internal static GameObject tracerEmp; internal static GameObject zapImpact; internal static GameObject shotHitEffect; internal static GameObject shotHitEffectEmp; internal static GameObject chainImpact; internal static GameObject zapOrbEffect; internal static GameObject zapCastEffect; internal static GameObject ultExplosion; internal static BuffDef haste; internal static BuffDef dash; internal static BuffDef ult; internal static Sprite snap; internal static Sprite snap2; internal static Sprite burst; internal static Sprite burst2; internal static Sprite burstR; internal static Sprite burstR2; internal static Sprite dashSprite; internal static Sprite ultSprite; internal static Material skateMat; internal static GameObject beamTracer { get; set; } internal static T Load<T>(string path) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion(); } internal static void CreatePrefabs() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_040d: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Expected O, but got Unknown //IL_04b0: Unknown result type (might be due to invalid IL or missing references) //IL_04e3: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_0509: Expected O, but got Unknown //IL_0524: Unknown result type (might be due to invalid IL or missing references) //IL_0540: Unknown result type (might be due to invalid IL or missing references) //IL_0586: Unknown result type (might be due to invalid IL or missing references) //IL_058d: Expected O, but got Unknown //IL_059e: Unknown result type (might be due to invalid IL or missing references) //IL_05be: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Unknown result type (might be due to invalid IL or missing references) //IL_05f9: Unknown result type (might be due to invalid IL or missing references) //IL_0608: Unknown result type (might be due to invalid IL or missing references) //IL_0631: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0696: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06a9: Unknown result type (might be due to invalid IL or missing references) //IL_06c8: Unknown result type (might be due to invalid IL or missing references) //IL_06cd: Unknown result type (might be due to invalid IL or missing references) //IL_0713: Unknown result type (might be due to invalid IL or missing references) //IL_0784: Unknown result type (might be due to invalid IL or missing references) //IL_078b: Expected O, but got Unknown //IL_07a1: Unknown result type (might be due to invalid IL or missing references) //IL_07c5: Unknown result type (might be due to invalid IL or missing references) //IL_07d2: Unknown result type (might be due to invalid IL or missing references) //IL_07d9: Expected O, but got Unknown //IL_07e0: Unknown result type (might be due to invalid IL or missing references) //IL_07e5: Unknown result type (might be due to invalid IL or missing references) //IL_0806: Unknown result type (might be due to invalid IL or missing references) //IL_0813: Unknown result type (might be due to invalid IL or missing references) //IL_081a: Expected O, but got Unknown //IL_083f: Unknown result type (might be due to invalid IL or missing references) //IL_085b: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) OrbAPI.AddOrb(typeof(ZapOrb)); snap = Assets.Load<Sprite>("zeriqpassive"); snap2 = Assets.Load<Sprite>("zeriqpassivecharged"); burst = Assets.Load<Sprite>("zeriq"); burst2 = Assets.Load<Sprite>("zeriqe"); burstR = Assets.Load<Sprite>("zeriqr"); burstR2 = Assets.Load<Sprite>("zeriqre"); dashSprite = Assets.Load<Sprite>("zerie"); ultSprite = Assets.Load<Sprite>("zerir"); haste = Utils.NewBuffDef("HYPERCHARGED", stack: true, hidden: false, Assets.Load<Sprite>("zeriphaste"), Color.white); dash = Utils.NewBuffDef("Lightning Rounds", stack: false, hidden: false, dashSprite, Color.white); ult = Utils.NewBuffDef("OVERCHARGED", stack: false, hidden: false, ultSprite, Color.white); ultExplosion = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Loader/LoaderGroundSlam.prefab"), "ZeriUltExplosion", false); Light componentInChildren = ultExplosion.GetComponentInChildren<Light>(); componentInChildren.color = new Color(1f, 0f, 1f); componentInChildren.range = 25f; Material val = Assets.Load<Material>("lightningMatBG 3"); Material val2 = Assets.Load<Material>("lightningMatBG 4"); Material val3 = Assets.Load<Material>("lightningMatBG 5"); Material material = Assets.Load<Material>("Point12cg 3"); Material[] materials = (Material[])(object)new Material[4] { val, val2, val3, val2 }; ParticleSystemRenderer[] componentsInChildren = ultExplosion.GetComponentsInChildren<ParticleSystemRenderer>(); foreach (ParticleSystemRenderer val4 in componentsInChildren) { string name = ((Object)val4).name; if (name == "Sphere, Expanding") { ((Renderer)val4).materials = materials; } if (name == "Debris" || name == "Sparks, Single") { ((Renderer)val4).material = material; } if (name == "Ring") { ((Renderer)val4).materials = materials; } if (name == "Omni, Directional") { ((Renderer)val4).material = Load<Material>("RoR2/DLC1/ChainLightningVoid/matLightningVoid.mat"); val4.lengthScale = 22f; ((Component)val4).transform.localPosition = Vector3.up * 0.3f; } if (name == "Flash Center") { ((Renderer)val4).material = Load<Material>("RoR2/Base/Gravekeeper/matOmniRing1ArchWisp.mat"); } } ContentAddition.AddEffect(ultExplosion); zapCastEffect = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("beamCharge"), "ZeriCastEffect", false); Utils.RegisterEffect(zapCastEffect, 0.5f); zapImpact = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("beamHit"), "ZeriZapImpactEffect", false); Utils.RegisterEffect(zapImpact, 0.5f); chainImpact = PrefabAPI.InstantiateClone(zapImpact, "ZeriChainImpactEffect", false); Utils.RegisterEffect(chainImpact, 1f, "Play_Zeri_R_Chain_Hit"); zapOrbEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/ChainLightning/ChainLightningOrbEffect.prefab"), "ZeriZapOrbEffect", false); zapOrbEffect.AddComponent<OrbEffectParent>(); zapOrbEffect.GetComponent<OrbEffect>().endEffect = chainImpact; LineRenderer componentInChildren2 = zapOrbEffect.GetComponentInChildren<LineRenderer>(); ((Renderer)componentInChildren2).materials = (Material[])(object)new Material[3] { Assets.Load<Material>("lightningMatBG 1"), Assets.Load<Material>("lightningMatBG"), Assets.Load<Material>("lightningMatBG 2") }; componentInChildren2.textureMode = (LineTextureMode)0; ContentAddition.AddEffect(zapOrbEffect); Texture2D val5 = Assets.Load<Texture2D>("thorns"); Material val6 = Load<Material>("RoR2/DLC1/VoidRaidCrab/matVoidRaidCrabTripleBeam1.mat"); Material val7 = Load<Material>("RoR2/DLC1/VoidRaidCrab/matVoidRaidCrabTripleBeam2.mat"); beamTracer = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/DLC1/VoidRaidCrab/TracerVoidRaidCrabTripleBeam.prefab"), "ZeriBeamTracer", false); ((Component)beamTracer.transform.GetChild(0)).transform.localPosition = Vector3.forward * 18f; beamTracer.GetComponent<Tracer>().startTransform = beamTracer.transform.GetChild(1); ((Renderer)beamTracer.GetComponentInChildren<LineRenderer>()).enabled = false; Object.Destroy((Object)(object)((Component)beamTracer.GetComponentInChildren<Decal>()).gameObject); beamTracer.GetComponent<DestroyOnTimer>().duration = 0.3f; ParticleSystemRenderer[] componentsInChildren2 = beamTracer.GetComponentsInChildren<ParticleSystemRenderer>(); Material val8 = new Material(val6); val8.SetTexture("_MainTex", (Texture)(object)val5); val8.SetColor("_TintColor", new Color(0.682352f, 0f, 0.498039f, 0.603921f)); val8.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/DLC1/Common/ColorRamps/texRampPortalVoid.png")); val8.SetTextureScale("_MainTex", new Vector2(0.5f, 5f)); val8.SetFloat("_Boost", 15f); Material val9 = new Material(val8); val9.SetColor("_TintColor", new Color(1f, 1f, 1f, 0.741176f)); val9.SetTextureScale("_MainTex", new Vector2(-0.5f, -5f)); val9.SetFloat("_Boost", 20f); ((Renderer)componentsInChildren2[0]).materials = (Material[])(object)new Material[3] { val8, val8, val9 }; Material val10 = new Material(Assets.Load<Material>("petal")); val10.color = new Color(0.498039f, 0f, 1f); ((Renderer)componentsInChildren2[1]).material = val10; TextureSheetAnimationModule textureSheetAnimation = ((Component)componentsInChildren2[1]).GetComponent<ParticleSystem>().textureSheetAnimation; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).enabled = true; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).numTilesX = 2; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).numTilesY = 2; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).animation = (ParticleSystemAnimationType)1; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).rowMode = (ParticleSystemAnimationRowMode)1; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).frameOverTime = new MinMaxCurve(1f); MinMaxCurve startFrame = default(MinMaxCurve); ((MinMaxCurve)(ref startFrame)).mode = (ParticleSystemCurveMode)0; ((MinMaxCurve)(ref startFrame)).constantMin = 0f; ((MinMaxCurve)(ref startFrame)).constantMax = 2f; ((TextureSheetAnimationModule)(ref textureSheetAnimation)).startFrame = startFrame; GameObject val11 = Object.Instantiate<GameObject>(((Component)componentsInChildren2[1]).gameObject, ((Component)componentsInChildren2[1]).transform.parent); val11.transform.localScale = new Vector3(2f, 1f, 1f); val11.GetComponent<Renderer>().material = Assets.Load<Material>("HPL2cg"); MainModule main = val11.GetComponent<ParticleSystem>().main; ((MainModule)(ref main)).startLifetime = new MinMaxCurve(0.05f, 0.1f); ((MainModule)(ref main)).startSizeMultiplier = 0.25f; TextureSheetAnimationModule textureSheetAnimation2 = val11.GetComponent<ParticleSystem>().textureSheetAnimation; ((TextureSheetAnimationModule)(ref textureSheetAnimation2)).numTilesX = 3; ((TextureSheetAnimationModule)(ref textureSheetAnimation2)).numTilesY = 3; ((TextureSheetAnimationModule)(ref textureSheetAnimation2)).animation = (ParticleSystemAnimationType)0; ((TextureSheetAnimationModule)(ref textureSheetAnimation2)).timeMode = (ParticleSystemAnimationTimeMode)0; ((TextureSheetAnimationModule)(ref textureSheetAnimation2)).frameOverTime = new MinMaxCurve(1f, AnimationCurve.Linear(0f, 0f, 1f, 0.2f)); Object.Instantiate<GameObject>(val11, val11.transform.parent).GetComponent<Renderer>().material = Assets.Load<Material>("Point12cg 2"); LineRenderer[] componentsInChildren3 = beamTracer.GetComponentsInChildren<LineRenderer>(); ((Renderer)componentsInChildren3[2]).enabled = false; componentsInChildren3[1].widthMultiplier = 5f; componentsInChildren3[1].textureMode = (LineTextureMode)0; ((Renderer)componentsInChildren3[1]).sortingOrder = 1; Material val12 = new Material(val6); val12.SetTexture("_MainTex", (Texture)(object)val5); val12.SetTextureScale("_MainTex", Vector2.one); val12.SetFloat("_AlphaBoost", 1.8f); val12.SetColor("_TintColor", Color.white); Material val13 = new Material(val12); val13.SetTextureScale("_MainTex", -Vector2.one); val13.SetColor("_TintColor", new Color(0.2f, 0f, 0.564705f)); Material val14 = new Material(val7); val14.SetTexture("_MainTex", (Texture)(object)val5); val14.SetColor("_TintColor", new Color(1f, 0.305882f, 0f)); val14.SetTextureScale("_MainTex", new Vector2(-1f, 1f)); ((Renderer)componentsInChildren3[1]).materials = (Material[])(object)new Material[3] { val12, val13, val14 }; Utils.RegisterEffect(beamTracer, -1f, "Play_Zeri_W_Beam"); shotHitEffect = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("hitEffect"), "ZeriShotHitEffect", false); Utils.RegisterEffect(shotHitEffect, 0.5f, "Play_Zeri_Q_Hit"); shotHitEffectEmp = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("hitEffectEmp"), "ZeriShotHitEffectEmp", false); Utils.RegisterEffect(shotHitEffectEmp, 0.5f, "Play_Zeri_Q_Hit"); Material val15 = Object.Instantiate<Material>(Load<Material>("RoR2/Base/ClayBruiser/matClayMinigunTracer.mat")); val15.SetFloat("_Boost", 5f); val15.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampLaserTurbine.png")); tracer = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/ClayBruiser/TracerClayBruiserMinigun.prefab"), "ZeriTracer", false); LineRenderer[] componentsInChildren4 = tracer.GetComponentsInChildren<LineRenderer>(); ((Renderer)componentsInChildren4[0]).material = val15; ((Renderer)componentsInChildren4[1]).material = Load<Material>("RoR2/Base/Nullifier/matNullifierStarTrail.mat"); componentsInChildren4[1].widthMultiplier = 1f; componentsInChildren4[1].endWidth = 0f; BeamPointsFromTransforms[] componentsInChildren5 = tracer.GetComponentsInChildren<BeamPointsFromTransforms>(); componentsInChildren5[1].pointTransforms = (Transform[])(object)new Transform[2] { componentsInChildren5[0].pointTransforms[1], componentsInChildren5[0].pointTransforms[0] }; ContentAddition.AddEffect(tracer); Material val16 = Object.Instantiate<Material>(val15); val16.SetTexture("_RemapTex", (Texture)(object)Load<Texture2D>("RoR2/Base/Common/ColorRamps/texRampGateway.png")); tracerEmp = PrefabAPI.InstantiateClone(tracer, "ZeriTracerEmp", false); LineRenderer[] componentsInChildren6 = tracerEmp.GetComponentsInChildren<LineRenderer>(); ((Renderer)componentsInChildren6[0]).material = val16; componentsInChildren6[0].widthMultiplier = 1f; componentsInChildren6[1].widthMultiplier = 1f; ContentAddition.AddEffect(tracerEmp); projectileGhost = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("beamProjectile"), "ZeriProjectileGhost", false); projectileGhost.AddComponent<ProjectileGhostController>(); GameObject gameObject = ((Component)projectileGhost.transform.GetChild(0)).gameObject; Utils.AddRotationComponent(gameObject, 1440f, (RotationAxis)2); Utils.AddScaleComponent(gameObject, 0.05f); projectile = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Vulture/WindbladeProjectile.prefab"), "ZeriProjectile", true); projectile.AddComponent<ZeriProjectileBehaviour>(); projectile.GetComponent<ProjectileController>().ghostPrefab = projectileGhost; projectile.GetComponent<ProjectileSingleTargetImpact>().impactEffect = zapImpact; ContentAddition.AddProjectile(projectile); } } internal class BaseZeriState : BaseSkillState { public ZeriBehaviour behaviour; public HurtBox target; public Animator animator; public bool hasDash; public bool hasUlt; public override void OnEnter() { ((BaseState)this).OnEnter(); hasUlt = ((EntityState)this).characterBody.HasBuff(Prefabs.ult); hasDash = ((EntityState)this).characterBody.HasBuff(Prefabs.dash); animator = ((EntityState)this).GetModelAnimator(); behaviour = ((EntityState)this).GetComponent<ZeriBehaviour>(); target = ((HuntressTracker)behaviour).trackingTarget; } } internal class CharacterMain : GenericCharacterMain { private EntityStateMachine slide; private Texture2D t; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); t = Assets.Load<Texture2D>("thorns"); slide = Array.Find(((EntityState)this).gameObject.GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Slide"); } public override void HandleMovements() { if (((EntityState)this).characterBody.HasBuff(Prefabs.dash)) { } ((GenericCharacterMain)this).HandleMovements(); } public override void ProcessJump() { Utility utility; if (!Object.op_Implicit((Object)(object)slide) || (utility = slide.state as Utility) == null) { ((GenericCharacterMain)this).ProcessJump(); } } } internal class Zap : BaseZeriState { private float duration; private float endDuration; private float baseDuration = 0.25f; private float baseEndDuration = 0.15f; private float damageCoefficient = 3.4f; private bool hasFired; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; endDuration = baseEndDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Override", "Snap" + RoR2Application.rng.RangeInt(0, 3), "M1", duration, 0f); ((Component)((BaseState)this).FindModelChild("zapMuzzleFlash")).GetComponent<ParticleSystem>().Play(true); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && !hasFired) { hasFired = true; Fire(); } if (((EntityState)this).fixedAge >= duration + endDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: 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) if (!Object.op_Implicit((Object)(object)target) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } behaviour.RemoveCharge(1f); AkSoundEngine.PostEvent(Sounds.Play_Zeri_Zap_Cast, ((EntityState)this).gameObject); AkSoundEngine.PostEvent(Sounds.Play_Zeri_Zap_Hit, ((Component)target).gameObject); Transform val = ((BaseState)this).FindModelChild("handMuzzle"); if (NetworkServer.active) { ZapOrb zapOrb = new ZapOrb(); zapOrb.startTransform = val; ((Orb)zapOrb).origin = val.position; zapOrb.isCrit = ((BaseState)this).RollCrit(); zapOrb.bouncesRemaining = 0; zapOrb.damageValue = ((BaseState)this).damageStat * damageCoefficient; zapOrb.bouncedObjects = new List<HealthComponent> { target.healthComponent }; zapOrb.teamIndex = ((EntityState)this).teamComponent.teamIndex; zapOrb.attacker = ((EntityState)this).gameObject; zapOrb.procChainMask = default(ProcChainMask); zapOrb.procCoefficient = 1f; zapOrb.damageColorIndex = (DamageColorIndex)5; zapOrb.damageType = DamageTypeCombo.op_Implicit(DamageTypeCombo.op_Implicit((DamageType)524352) | DamageTypeCombo.GenericPrimary); zapOrb.range = 20f; ((Orb)zapOrb).target = target; OrbManager.instance.AddOrb((Orb)(object)zapOrb); } } public override void OnExit() { if (hasFired && Object.op_Implicit((Object)(object)behaviour)) { ((EntityState)this).skillLocator.primary.UnsetSkillOverride((object)behaviour, ZeriBehaviour.zap, (SkillOverridePriority)4); } ((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 Primary : BaseZeriState { private float duration; private float endDuration; private float baseDuration = 0.55f; private float baseEndDuration = 0.25f; private float shotCount = 7f; private float fireStopwatch; private float fireTime = 0.7f; private float damageCoefficient; private ParticleSystem particles; public override void OnEnter() { base.OnEnter(); if (hasUlt) { shotCount = 3f; } damageCoefficient = 2.8f / shotCount; behaviour.AddCharge(0.1f); duration = baseDuration / (((BaseState)this).attackSpeedStat + (hasUlt ? 0.4f : 0f)); endDuration = baseEndDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Override", hasDash ? "PrimaryEmpowered" : ("Primary" + RoR2Application.rng.RangeInt(0, 2)), "M1", duration, 0f); AkSoundEngine.PostEvent(hasUlt ? Sounds.Play_Zeri_Q_Cast_Emp : Sounds.Play_Zeri_Q_Cast, ((EntityState)this).gameObject); particles = ((Component)((BaseState)this).FindModelChild((hasDash || hasUlt) ? "muzzleFlashEmp" : "muzzleFlash")).GetComponent<ParticleSystem>(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge <= duration) { fireStopwatch += Time.fixedDeltaTime; } if (fireStopwatch >= duration * fireTime / shotCount) { fireStopwatch = 0f; Fire(); } if (((EntityState)this).fixedAge >= duration + endDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0129: 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_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_017c: 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_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: 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_01bc: Unknown result type (might be due to invalid IL or missing references) particles.Play(true); if (((EntityState)this).isAuthority) { float num = 0.8f; ((BaseState)this).AddRecoil(-1f * num, -1.5f * num, -0.25f * num, 0.25f * num); Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { new BulletAttack { maxDistance = (hasUlt ? 50 : 40), stopperMask = (hasDash ? ((LayerIndex)(ref LayerIndex.world)).mask : ((LayerIndex)(ref LayerIndex.entityPrecise)).mask), owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0.4f, bulletCount = 1u, damage = ((BaseState)this).damageStat * damageCoefficient, force = 155f, tracerEffectPrefab = ((hasDash || hasUlt) ? Prefabs.tracerEmp : Prefabs.tracer), muzzleName = "gunMuzzle", hitEffectPrefab = ((hasDash || hasUlt) ? Prefabs.shotHitEffectEmp : Prefabs.shotHitEffect), isCrit = ((BaseState)this).RollCrit(), radius = (hasUlt ? 0.17f : 0.12f), procCoefficient = 1f / shotCount, smartCollision = true, damageType = (DamageTypeCombo.op_Implicit((DamageType)(((EntityState)this).characterBody.HasBuff(Prefabs.ult) ? 64 : 0)) | DamageTypeCombo.GenericPrimary) }.Fire(); } } } 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 Secondary : BaseZeriState { private float duration; private float endDuration; private float baseDuration = 0.55f; private float baseEndDuration = 0.15f; private bool hasFired; private float damageCoefficient = 5f; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; endDuration = baseEndDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Override", hasDash ? "SecondaryDash" : "Secondary", "M1", duration, 0f); AkSoundEngine.PostEvent(Sounds.Play_Zeri_W_Cast, ((EntityState)this).gameObject); ((Component)((BaseState)this).FindModelChild("beamCastEffect")).GetComponent<ParticleSystem>().Play(true); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && !hasFired) { hasFired = true; Fire(); } if (((EntityState)this).fixedAge >= duration + endDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_0088: 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) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: 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_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) float num = 5f; ((BaseState)this).AddRecoil(-1f * num, -1.5f * num, -0.25f * num, 0.25f * num); ((Component)((BaseState)this).FindModelChild("beamEffect")).GetComponent<ParticleSystem>().Play(true); Ray aimRay = ((BaseState)this).GetAimRay(); float num2 = 18f; float num3 = 0f; RaycastHit val = default(RaycastHit); if (behaviour.dashing || Physics.Raycast(CameraRigController.ModifyAimRayIfApplicable(aimRay, ((EntityState)this).gameObject, ref num3), ref val, num2 + num3, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { if (((EntityState)this).isAuthority) { new BulletAttack { stopperMask = LayerMask.op_Implicit(0), maxDistance = 180f, owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, bulletCount = 1u, damage = ((BaseState)this).damageStat * damageCoefficient, force = 1550f, muzzleName = "fingerMuzzle", tracerEffectPrefab = null, hitEffectPrefab = Prefabs.zapImpact, isCrit = true, radius = 2.5f, procCoefficient = 1f, smartCollision = true, damageType = (DamageTypeCombo.op_Implicit((DamageType)8) | DamageTypeCombo.GenericSecondary) }.Fire(); } EffectData val2 = new EffectData { origin = ((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * num2, start = ((Ray)(ref aimRay)).origin }; EffectManager.SpawnEffect(Prefabs.beamTracer, val2, false); } else { AkSoundEngine.PostEvent(Sounds.Play_Zeri_W_Fire, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { FireProjectileInfo val3 = default(FireProjectileInfo); val3.crit = ((BaseState)this).RollCrit(); val3.damage = ((EntityState)this).characterBody.damage * damageCoefficient; val3.damageTypeOverride = DamageTypeCombo.GenericSecondary; val3.damageColorIndex = (DamageColorIndex)0; val3.force = 500f; val3.owner = ((EntityState)this).gameObject; val3.position = ((Ray)(ref aimRay)).origin; val3.procChainMask = default(ProcChainMask); val3.projectilePrefab = Prefabs.projectile; val3.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val3.useFuseOverride = false; val3.useSpeedOverride = true; ((FireProjectileInfo)(ref val3)).speedOverride = 180f; val3.target = null; FireProjectileInfo val4 = val3; ProjectileManager.instance.FireProjectile(val4); } } } 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 Special : BaseSkillState { private float blastDelay = 0.3f; private bool hasFired; private float blastDamageCoefficient = 7f; private ChildLocator childLocator; private GameObject hair; private GameObject ultHair; private GameObject ultEffect; private uint ID; public override void OnEnter() { ((BaseState)this).OnEnter(); childLocator = ((EntityState)this).GetModelChildLocator(); hair = ((Component)childLocator.FindChild("hair")).gameObject; ultHair = ((Component)childLocator.FindChild("ultHair")).gameObject; ultEffect = ((Component)childLocator.FindChild("ultEffect")).gameObject; hair.SetActive(false); ultHair.SetActive(true); ultEffect.SetActive(true); ((EntityState)this).PlayAnimation("FullBody, Override", "Special", "Special", 0.25f, 0f); AkSoundEngine.PostEvent(Sounds.Play_Zeri_R_Cast, ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Prefabs.ult, 8f); } } public override void FixedUpdate() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00e6: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= blastDelay && !hasFired) { hasFired = true; ID = AkSoundEngine.PostEvent(Sounds.Play_Zeri_R_Buff_Loop, ((EntityState)this).gameObject); EffectManager.SpawnEffect(Prefabs.ultExplosion, new EffectData { origin = ((EntityState)this).characterBody.footPosition, scale = 18f }, false); if (((EntityState)this).isAuthority) { new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * blastDamageCoefficient, baseForce = 12000f, crit = ((BaseState)this).RollCrit(), damageType = (DamageTypeCombo.op_Implicit((DamageType)8) | DamageTypeCombo.GenericSpecial), falloffModel = (FalloffModel)0, procCoefficient = 1f, radius = 18f, position = ((EntityState)this).characterBody.footPosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Prefabs.zapImpact), teamIndex = ((EntityState)this).teamComponent.teamIndex }.Fire(); } } if (((EntityState)this).fixedAge > 8f && !((EntityState)this).characterBody.HasBuff(Prefabs.ult) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { AkSoundEngine.StopPlayingID(ID); AkSoundEngine.PostEvent(Sounds.Play_Zeri_R_Buff_End, ((EntityState)this).gameObject); hair.SetActive(true); ultHair.SetActive(false); ultEffect.SetActive(false); ((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)7; } } internal class Utility : BaseZeriState { private float duration = 2.5f; private Vector3 direction; private float speedCoefficient = 8f; private float buffStopwatch; private AnimationCurve curveLinear = AnimationCurve.Linear(0f, 1f, 1f, 0f); private uint ID; public override void OnEnter() { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); AkSoundEngine.PostEvent(Sounds.Play_Zeri_Vault, ((EntityState)this).gameObject); ID = AkSoundEngine.PostEvent(Sounds.Play_Zeri_Vault_Loop, ((EntityState)this).gameObject); behaviour.dashing = true; if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Prefabs.dash, 5f); } animator.SetBool("skip", false); ((EntityState)this).PlayAnimation("FullBody, Override", "Dash"); CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); } public override void FixedUpdate() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_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_009b: 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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0151: 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_015c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = true; ((EntityState)this).characterMotor.velocity = Vector3.zero; if (NetworkServer.active) { buffStopwatch += Time.fixedDeltaTime; if (buffStopwatch >= 0.5f) { ((EntityState)this).characterBody.AddTimedBuff(Prefabs.dash, 5f); } } direction = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); Vector3 val = -((EntityState)this).transform.up; RaycastHit val2 = default(RaycastHit); val = ((!Physics.Raycast(((EntityState)this).transform.position, direction, ref val2, 2f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) ? (val * 1f) : (val * -1f)); float num = 1f; if (((EntityState)this).fixedAge >= duration * 0.75f) { num = curveLinear.Evaluate(((EntityState)this).fixedAge / duration * 0.25f); } CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += (direction + val) * Util.Remap(((BaseState)this).moveSpeedStat, 3f, 30f, 1f, 8f) * speedCoefficient * num * Time.fixedDeltaTime; if (((EntityState)this).isAuthority && (((EntityState)this).fixedAge >= duration || (((EntityState)this).fixedAge >= 0.2f && ((ButtonState)(ref ((EntityState)this).inputBank.skill3)).justPressed))) { ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityEnd()); } } public override void OnExit() { AkSoundEngine.StopPlayingID(ID); ((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 UtilityEnd : BaseZeriState { public override void OnEnter() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); behaviour.dashing = false; CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); animator.SetBool("skip", true); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.25f && ((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)2; } } internal class Sounds { public static readonly uint Play_Zeri_W_Hit = 502496202u; public static readonly uint Play_Zeri_Vault = 513469639u; public static readonly uint Play_Zeri_W_Beam = 595767546u; public static readonly uint Play_Zeri_Q_Cast_Emp = 1114467683u; public static readonly uint Play_Zeri_Q_Cast = 1131720492u; public static readonly uint Play_Zeri_R_Chain_Hit = 1671415021u; public static readonly uint Play_Zeri_R_Cast = 2423159305u; public static readonly uint Play_Zeri_Recall = 2496843474u; public static readonly uint Play_Zeri_SlideStep = 2716309762u; public static readonly uint Play_Zeri_Zap_Hit = 3027015552u; public static readonly uint Play_Zeri_R_Buff_Loop = 3119151764u; public static readonly uint Play_Zeri_Zap_Cast = 3204731648u; public static readonly uint Play_Zeri_W_Cast = 3375703230u; public static readonly uint Play_Zeri_Q_Hit = 3754734020u; public static readonly uint Play_Zeri_W_Fire = 3871464959u; public static readonly uint Play_Zeri_Zap_Gain = 3962344328u; public static readonly uint Play_Zeri_R_Buff_End = 4051415217u; public static readonly uint Play_Zeri_Vault_Loop = 4061293372u; } internal static class Extensions { public static GameObject NewSyringe(this GameObject g, params Material[] m) { ((Renderer)g.GetComponentsInChildren<MeshRenderer>(false)[0]).material = m[0]; ((Renderer)g.GetComponent<TrailRenderer>()).material = m[1]; ((Renderer)g.GetComponent<ParticleSystemRenderer>()).material = m[2]; return g; } public static Material SwapTexture(this Material m, Texture2D t) { m.mainTexture = (Texture)(object)t; return m; } public static GameObject SwapMaterials(this GameObject g, Material[] m) { Renderer[] componentsInChildren = g.GetComponentsInChildren<Renderer>(); for (int i = 0; i < componentsInChildren.Length; i++) { if (Object.op_Implicit((Object)(object)m[i])) { componentsInChildren[i].material = m[i]; } } return g; } public static float Mult(this float f, float mult = 100f) { return f * mult; } public static Color ToRGB255(this Color c, string title, string body) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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) return new Color(c.r / 255f, c.g / 255f, c.b / 255f); } public static void SetStrings(this TooltipProvider t, string title, string body) { t.overrideTitleText = title; t.overrideBodyText = body; } } internal class Utils { public static EntityStateMachine NewStateMachine<T>(GameObject obj, string customName) where T : EntityState { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) SerializableEntityStateType val = default(SerializableEntityStateType); ((SerializableEntityStateType)(ref val))..ctor(typeof(T)); EntityStateMachine val2 = obj.AddComponent<EntityStateMachine>(); val2.customName = customName; val2.initialStateType = val; val2.mainStateType = val; return val2; } public static GenericSkill NewGenericSkill(GameObject obj, SkillDef skill) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) GenericSkill val = obj.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; val._skillFamily = val2; SkillFamily skillFamily = val.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = skill }; ((Variant)(ref val3)).viewableNode = new Node(skill.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); return val; } public static void AddAlt(SkillFamily skillFamily, SkillDef SkillDef) { //IL_0029: 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_004b: Expected O, but got Unknown //IL_004c: 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) Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = SkillDef }; ((Variant)(ref val)).viewableNode = new Node(SkillDef.skillNameToken, false, (Node)null); variants[num] = val; } public sta