Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of zhcnLoLModPak v1.1.1
modpak.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using BetterUI; using EntityStates; using EntityStates.Commando; using EntityStates.Huntress; using EntityStates.Huntress.HuntressWeapon; using EntityStates.LemurianBruiserMonster; using EntityStates.Mage; using EntityStates.Merc; using HG; using HG.BlendableTypes; using IL.RoR2; using JetBrains.Annotations; using KatarinaMod.Modules; using KatarinaMod.Modules.Survivors; using KatarinaMod.SkillStates; using KatarinaMod.SkillStates.BaseStates; using KatarinaMod.SkillStates.Katarina; using KatarinaMod.SkillStates.Katarina.Weapon; using KatarinaMod.Skills; using KinematicCharacterController; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using On.RoR2.Projectile; using On.RoR2.UI; using R2API; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.ContentManagement; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using SettMod.Controllers; using SettMod.Modules; using SettMod.Modules.Survivors; using SettMod.SkillStates; using SettMod.SkillStates.BaseStates; using SettMod.SkillStates.Emotes; using SettMod.SkillStates.Keystone; using SettMod.States; using SettMod.States.Emotes; using SettMod.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Serialization; 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.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Yuumi")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Yuumi")] [assembly: AssemblyTitle("Yuumi")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Yuumi { internal class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Yuumi.yuumiassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Yuumi.Yuumi.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class YuumiSkillDef : SkillDef { private class InstanceData : BaseSkillInstanceData { public AttachBehaviour behaviour; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { behaviour = ((Component)skillSlot).GetComponent<AttachBehaviour>() }; } internal static bool IsExecutable([NotNull] GenericSkill skillSlot) { AttachBehaviour behaviour = ((InstanceData)(object)skillSlot.skillInstanceData).behaviour; SkillLocator component = ((Component)skillSlot).GetComponent<SkillLocator>(); if (component.GetSkillSlotIndex(skillSlot) == 0) { return behaviour.canExecutePrimary; } return behaviour.canExecute; } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return IsExecutable(skillSlot) && ((SkillDef)this).CanExecute(skillSlot); } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && IsExecutable(skillSlot); } } internal static class BullseyeBossFilter { public static void FilterOutEnemies(this BullseyeSearch b, TeamIndex teamIndex) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) b.candidatesEnumerable = b.candidatesEnumerable.Where((CandidateInfo v) => v.hurtBox.healthComponent.body.teamComponent.teamIndex == teamIndex); } } internal class AttachBehaviour : HuntressTracker { internal static SkillDef primaryOverride; private CharacterBody attachedBody; public bool enable = true; public bool canExecute = true; public bool canExecutePrimary = true; private float stopwatch; private GameObject attachment; private Inventory inventory; private Inventory yuumiInventory; public AimRequest aimRequest; private List<ItemIndex> itemBlacklist; public CharacterBody AttachedBody => Object.op_Implicit((Object)(object)attachedBody) ? attachedBody : null; public Transform attachmentPosition => Object.op_Implicit((Object)(object)attachment) ? attachment.GetComponent<ChildLocator>().FindChild("position") : null; public bool isAttached { get { YuumiGlobal.hasAttached = Object.op_Implicit((Object)(object)attachedBody); return Object.op_Implicit((Object)(object)attachedBody); } } public HurtBox target => Object.op_Implicit((Object)(object)base.trackingTarget) ? base.trackingTarget : null; private void Awake() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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_007b: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) ((HuntressTracker)this).Awake(); base.indicator = new Indicator(((Component)this).gameObject, Prefabs.yuumiIndicator); base.indicator.active = true; itemBlacklist = new List<ItemIndex> { Items.HealingPotion.itemIndex, Items.BearVoid.itemIndex, Items.ExtraLife.itemIndex, Items.ExtraLifeConsumed.itemIndex, Items.FragileDamageBonusConsumed.itemIndex, Items.HealingPotionConsumed.itemIndex, Items.RegeneratingScrapConsumed.itemIndex, Items.ExtraLifeVoid.itemIndex, Items.ExtraLifeVoidConsumed.itemIndex }; } private void OnEnable() { YuumiGlobal.hasAttached = true; base.trackerUpdateFrequency = 10f; base.maxTrackingDistance = 100f; } public void Detach(CharacterBody newBody = null) { if (Object.op_Implicit((Object)(object)base.characterBody) && Object.op_Implicit((Object)(object)base.characterBody.skillLocator) && base.characterBody.skillLocator.primary.HasSkillOverrideOfPriority((SkillOverridePriority)4)) { base.characterBody.skillLocator.primary.UnsetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); } attachedBody = newBody; RemoveItems(); } public void Attach() { //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: 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) if (Object.op_Implicit((Object)(object)base.characterBody) && Object.op_Implicit((Object)(object)base.characterBody.skillLocator)) { base.characterBody.skillLocator.primary.SetSkillOverride((object)this, primaryOverride, (SkillOverridePriority)4); } if (!Object.op_Implicit((Object)(object)attachment)) { attachment = Object.Instantiate<GameObject>(Prefabs.attachAttachment, target.healthComponent.body.transform); } else { attachment.transform.SetParent(target.healthComponent.body.transform); } attachment.transform.localPosition = ((Component)target.healthComponent.body.mainHurtBox).transform.localPosition; attachment.GetComponent<ChildLocator>().FindChild("position").localPosition = new Vector3(target.healthComponent.body.radius * 2f, 0f, 0f); attachedBody = target.healthComponent.body; if (!attachedBody.isPlayerControlled || MainPlugin.giveItemsToPlayers.Value) { inventory = (Object.op_Implicit((Object)(object)attachedBody.inventory) ? attachedBody.inventory : null); if (Object.op_Implicit((Object)(object)yuumiInventory) && NetworkServer.active) { for (int i = 0; i < yuumiInventory.itemStacks.Length; i++) { ItemIndex val = (ItemIndex)i; if (!itemBlacklist.Contains(val)) { inventory.GiveItem(val, yuumiInventory.GetItemCount(val)); } } } } canExecute = false; } private void FixedUpdate() { //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_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: 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_016f: Unknown result type (might be due to invalid IL or missing references) ((HuntressTracker)this).FixedUpdate(); if (!Object.op_Implicit((Object)(object)yuumiInventory) && Object.op_Implicit((Object)(object)base.characterBody) && Object.op_Implicit((Object)(object)base.characterBody.inventory)) { yuumiInventory = base.characterBody.inventory; } base.trackerUpdateStopwatch = 0f; if (!base.indicator.active) { return; } stopwatch += Time.fixedDeltaTime; if (stopwatch >= 0.1f) { stopwatch = 0f; Ray val = default(Ray); ((Ray)(ref val))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection); base.search.filterByLoS = true; base.search.searchOrigin = ((Ray)(ref val)).origin; base.search.searchDirection = ((Ray)(ref val)).direction; base.search.sortMode = (SortMode)1; base.search.maxDistanceFilter = base.maxTrackingDistance; base.search.maxAngleFilter = base.maxTrackingAngle; base.search.RefreshCandidates(); base.search.FilterOutGameObject(((Component)this).gameObject); if (Object.op_Implicit((Object)(object)attachedBody)) { base.search.FilterOutGameObject(((Component)attachedBody).gameObject); } base.search.FilterOutEnemies(base.teamComponent.teamIndex); base.trackingTarget = base.search.GetResults().FirstOrDefault(); base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null); } } public void RemoveItems() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)inventory) || !Object.op_Implicit((Object)(object)yuumiInventory) || !NetworkServer.active) { return; } for (int i = 0; i < inventory.itemStacks.Length; i++) { ItemIndex val = (ItemIndex)i; if (!itemBlacklist.Contains(val)) { inventory.RemoveItem(val, yuumiInventory.GetItemCount(val)); } } } private void OnDisable() { if (Object.op_Implicit((Object)(object)attachment)) { Object.Destroy((Object)(object)attachment); } RemoveItems(); YuumiGlobal.hasAttached = false; } } internal class YuumiDisplayBehaviour : MonoBehaviour { private uint ID; private void OnEnable() { ID = AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Respawn, ((Component)this).gameObject); } private void OnDisable() { AkSoundEngine.StopPlayingID(ID); } } 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 //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); ProjectileController.IgnoreCollisionsWithOwner += new hook_IgnoreCollisionsWithOwner(ProjectileController_IgnoreCollisionsWithOwner); ProjectileSingleTargetImpact.OnProjectileImpact += new hook_OnProjectileImpact(ProjectileSingleTargetImpact_OnProjectileImpact); } private static void ProjectileSingleTargetImpact_OnProjectileImpact(orig_OnProjectileImpact orig, ProjectileSingleTargetImpact self, ProjectileImpactInfo impactInfo) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)self.impactEffect == (Object)(object)Prefabs.projectileHitEffect && Object.op_Implicit((Object)(object)impactInfo.collider)) { HurtBox component = ((Component)impactInfo.collider).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { self.impactEffect = Prefabs.projectileHitEffectWeak; } } orig.Invoke(self, impactInfo); } private static void ProjectileController_IgnoreCollisionsWithOwner(orig_IgnoreCollisionsWithOwner orig, ProjectileController self, bool shouldIgnore) { if (Object.op_Implicit((Object)(object)self.owner) && Object.op_Implicit((Object)(object)self.owner.GetComponent<AttachBehaviour>())) { AttachBehaviour component = self.owner.GetComponent<AttachBehaviour>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.AttachedBody)) { ModelLocator component2 = ((Component)component.AttachedBody).GetComponent<ModelLocator>(); if (!Object.op_Implicit((Object)(object)component2)) { return; } Transform modelTransform = component2.modelTransform; if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } HurtBoxGroup component3 = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); if (!Object.op_Implicit((Object)(object)component3)) { return; } HurtBox[] hurtBoxes = component3.hurtBoxes; for (int i = 0; i < hurtBoxes.Length; i++) { List<Collider> gameObjectComponents = GetComponentsCache<Collider>.GetGameObjectComponents(((Component)hurtBoxes[i]).gameObject); int j = 0; for (int count = gameObjectComponents.Count; j < count; j++) { Collider val = gameObjectComponents[j]; for (int k = 0; k < self.myColliders.Length; k++) { Collider val2 = self.myColliders[k]; Physics.IgnoreCollision(val, val2, shouldIgnore); } } GetComponentsCache<Collider>.ReturnBuffer(gameObjectComponents); } } } orig.Invoke(self, shouldIgnore); } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Prefabs.zoom)) { args.moveSpeedMultAdd += 0.3f; args.damageMultAdd += YuumiGlobal.YuumiDamageCalc(sender); } if (sender.HasBuff(Prefabs.zoomies)) { args.moveSpeedMultAdd += 0.2f; args.attackSpeedMultAdd += YuumiGlobal.YuumiAttackSpeedCalc(sender); } } } [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.Yuumi", "Yuumi", "1.0.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.Yuumi"; public const string MODNAME = "Yuumi"; public const string VERSION = "1.0.1"; public const string SURVIVORNAME = "Yuumi"; public const string SURVIVORNAMEKEY = "YUUMI"; public static GameObject characterPrefab; private static readonly Color characterColor = new Color(0.35294f, 0.42745f, 0.83922f); public static ConfigEntry<bool> giveItemsToPlayers; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Expected O, but got Unknown giveItemsToPlayers = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Give Items To Attached Players", "Enable"), false, new ConfigDescription("This mechanic can be easily exploitable, so it's disabled by default.", (AcceptableValueBase)null, Array.Empty<object>())); Assets.PopulateAssets(); Prefabs.CreatePrefabs(); CreatePrefab(); RegisterStates(); RegisterCharacter(); Hook.Hooks(); } internal static void CreatePrefab() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown //IL_0153: 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_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_0430: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_051b: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_063b: Unknown result type (might be due to invalid IL or missing references) //IL_0658: Unknown result type (might be due to invalid IL or missing references) //IL_0675: Unknown result type (might be due to invalid IL or missing references) //IL_0692: Unknown result type (might be due to invalid IL or missing references) //IL_06af: Unknown result type (might be due to invalid IL or missing references) //IL_06cc: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_08de: Unknown result type (might be due to invalid IL or missing references) //IL_08f5: Unknown result type (might be due to invalid IL or missing references) //IL_08fa: Unknown result type (might be due to invalid IL or missing references) //IL_0902: Unknown result type (might be due to invalid IL or missing references) //IL_0960: Unknown result type (might be due to invalid IL or missing references) //IL_0a1c: Unknown result type (might be due to invalid IL or missing references) //IL_0a21: Unknown result type (might be due to invalid IL or missing references) //IL_0a4f: Unknown result type (might be due to invalid IL or missing references) //IL_0a54: Unknown result type (might be due to invalid IL or missing references) //IL_0a7d: Unknown result type (might be due to invalid IL or missing references) //IL_0a82: Unknown result type (might be due to invalid IL or missing references) //IL_0a93: Unknown result type (might be due to invalid IL or missing references) //IL_0a98: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); characterPrefab = PrefabAPI.InstantiateClone(val, "YuumiBody", true); characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; characterPrefab.AddComponent<AttachBehaviour>(); 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>("yuumi"); GameObject val3 = new GameObject("ModelBase"); val3.transform.parent = characterPrefab.transform; val3.transform.localPosition = new Vector3(0f, -0.7f, 0f); val3.transform.localRotation = Quaternion.identity; val3.transform.localScale = new Vector3(1f, 1f, 1f); GameObject val4 = new GameObject("AimOrigin"); val4.transform.parent = val3.transform; val4.transform.localPosition = new Vector3(0f, 1f, 0f); val4.transform.localRotation = Quaternion.identity; val4.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val3.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>(); component.moveVector = Vector3.zero; component.targetTransform = val3.transform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = val2.GetComponentInChildren<Animator>(); component.driveFromRootRotation = false; component.turnSpeed = 720f; CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "YuumiBody"; component2.baseNameToken = "YUUMI_NAME"; component2.subtitleNameToken = "YUUMI_SUBTITLE"; component2.bodyFlags = (BodyFlags)17; component2.rootMotionInMainState = false; component2.mainRootSpeed = 0f; component2.baseMaxHealth = 100f; component2.levelMaxHealth = 35f; component2.baseRegen = 1f; component2.levelRegen = 0.33f; component2.baseMaxShield = 0f; component2.levelMaxShield = 0f; component2.baseMoveSpeed = 7f; component2.levelMoveSpeed = 0f; component2.baseAcceleration = 110f; component2.baseJumpPower = 15f; component2.levelJumpPower = 0f; component2.baseDamage = 12f; component2.levelDamage = 2.4f; component2.baseAttackSpeed = 1f; component2.levelAttackSpeed = 0f; component2.baseCrit = 1f; component2.levelCrit = 0f; component2.baseArmor = 0f; component2.levelArmor = 0f; component2.baseJumpCount = 1; component2.sprintingSpeedMultiplier = 1.45f; component2.wasLucky = false; component2.hideCrosshair = false; component2.aimOriginTransform = val4.transform; component2.hullClassification = (HullClassification)0; component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture; component2.isChampion = false; component2.currentVehicle = null; component2.skinIndex = 0u; component2.bodyColor = characterColor; CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>(); component3.walkSpeedPenaltyCoefficient = 1f; component3.characterDirection = component; component3.muteWalkMotion = false; component3.mass = 160f; component3.airControl = 0.25f; component3.disableAirControlUntilCollision = false; component3.generateParametersOnAwake = true; InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>(); component4.moveVector = Vector3.zero; CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>(); component5.cameraParams = val.GetComponent<CameraTargetParams>().cameraParams; component5.cameraPivotTransform = null; component5.recoil = Vector2.zero; component5.dontRaycastToPivot = false; ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>(); component6.modelTransform = transform; component6.modelBaseTransform = val3.transform; component6.dontReleaseModelOnDeath = false; component6.autoUpdateModelTransform = true; component6.dontDetatchFromParent = false; component6.noCorpse = false; component6.normalizeToFloor = false; component6.preserveModel = false; ChildLocator component7 = val2.GetComponent<ChildLocator>(); CharacterModel val5 = val2.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren[i], defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] array = list.ToArray(); val5.body = component2; val5.baseRendererInfos = array; val5.autoPopulateLightInfos = true; val5.invisibilityCount = 0; val5.temporaryOverlays = new List<TemporaryOverlay>(); Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val5, "mainSkinnedMeshRenderer", componentsInChildren[0]); GameObject gameObject = ((Component)transform).gameObject; CharacterModel component8 = gameObject.GetComponent<CharacterModel>(); ModelSkinController val6 = gameObject.AddComponent<ModelSkinController>(); ChildLocator component9 = gameObject.GetComponent<ChildLocator>(); LanguageAPI.Add("YUUMIBODY_DEFAULT_SKIN_NAME", "Default"); LanguageAPI.Add("YUUMIBODY_SKIN01_NAME", "Battle Principal"); LanguageAPI.Add("YUUMIBODY_SKIN02_NAME", "Heartseeker"); LanguageAPI.Add("YUUMIBODY_SKIN03_NAME", "Yuubee"); LanguageAPI.Add("YUUMIBODY_SKIN04_NAME", "Bewitching"); LanguageAPI.Add("YUUMIBODY_SKIN05_NAME", "EDG"); LanguageAPI.Add("YUUMIBODY_SKIN06_NAME", "Shiba"); val6.skins = (SkinDef[])(object)new SkinDef[7] { LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_DEFAULT_SKIN_NAME", "base", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN01_NAME", "skin01", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN02_NAME", "skin02", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN03_NAME", "skin03", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN04_NAME", "skin04", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN05_NAME", "skin05", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN06_NAME", "skin06", array)) }; HealthComponent component10 = characterPrefab.GetComponent<HealthComponent>(); component10.health = component2.baseMaxHealth; component10.shield = 0f; component10.barrier = 0f; component10.magnetiCharge = 0f; component10.body = null; component10.dontShowHealthbar = false; component10.globalDeathEventChanceCoefficient = 1f; characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f; characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true; SfxLocator component11 = characterPrefab.GetComponent<SfxLocator>(); component11.deathSound = "Play_ui_player_death"; component11.barkSound = ""; component11.openSound = ""; component11.landingSound = ""; component11.fallDamageSound = "Play_char_land_fall_damage"; component11.aliveLoopStart = ""; component11.aliveLoopStop = ""; Rigidbody component12 = characterPrefab.GetComponent<Rigidbody>(); component12.mass = 100f; component12.drag = 0f; component12.angularDrag = 0f; component12.useGravity = false; component12.isKinematic = true; component12.interpolation = (RigidbodyInterpolation)0; component12.collisionDetectionMode = (CollisionDetectionMode)0; component12.constraints = (RigidbodyConstraints)0; CapsuleCollider component13 = ((Component)component7.FindChild("collider")).GetComponent<CapsuleCollider>(); ((Collider)component13).isTrigger = false; ((Collider)component13).material = null; KinematicCharacterMotor component14 = characterPrefab.GetComponent<KinematicCharacterMotor>(); component14.CharacterController = (BaseCharacterController)(object)component3; component14.Capsule = component13; component14.Rigidbody = component12; component14.DetectDiscreteCollisions = false; component14.GroundDetectionExtraDistance = 0f; component14.MaxStepHeight = 0.2f; component14.MinRequiredStepDepth = 0.1f; component14.MaxStableSlopeAngle = 55f; component14.MaxStableDistanceFromLedge = 0.5f; component14.PreventSnappingOnLedges = false; component14.MaxStableDenivelationAngle = 55f; component14.RigidbodyInteractionType = (RigidbodyInteractionType)0; component14.PreserveAttachedRigidbodyMomentum = true; component14.HasPlanarConstraint = false; component14.PlanarConstraintAxis = Vector3.up; component14.StepHandling = (StepHandlingMethod)0; component14.LedgeHandling = true; component14.InteractiveRigidbodyHandling = true; component14.SafeMovement = false; HurtBoxGroup val7 = val2.AddComponent<HurtBoxGroup>(); HurtBox val8 = ((Component)component13).gameObject.AddComponent<HurtBox>(); ((Component)val8).gameObject.layer = LayerIndex.entityPrecise.intVal; val8.healthComponent = component10; val8.isBullseye = true; val8.damageModifier = (DamageModifier)0; val8.hurtBoxGroup = val7; val8.indexInGroup = 0; val7.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val8 }; val7.mainHurtBox = val8; val7.bullseyeCount = 1; AimAnimator val9 = val2.AddComponent<AimAnimator>(); val9.inputBank = component4; val9.directionComponent = component; val9.pitchRangeMax = 55f; val9.pitchRangeMin = -50f; val9.yawRangeMin = -44f; val9.yawRangeMax = 44f; val9.pitchGiveupRange = 30f; val9.yawGiveupRange = 10f; val9.giveupDuration = 8f; EntityStateMachine component15 = ((Component)component2).GetComponent<EntityStateMachine>(); component15.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component16 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component16.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component16.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); EntityStateMachine val10 = characterPrefab.AddComponent<EntityStateMachine>(); val10.customName = "Attach"; val10.initialStateType = new SerializableEntityStateType(typeof(Idle)); val10.mainStateType = new SerializableEntityStateType(typeof(Idle)); NetworkStateMachine component17 = ((Component)component2).GetComponent<NetworkStateMachine>(); List<EntityStateMachine> list2 = component17.stateMachines.ToList(); list2.Add(val10); component17.stateMachines = list2.ToArray(); ContentAddition.AddBody(characterPrefab); } private void RegisterCharacter() { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) string text = "<style=cSub>\r\n\r\n< ! > 附身状态下按空格脱离附身 " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > 悠米的技能加成同时受悠米和附身友军的属性影响 " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > 奔跑状态下附身会保留奔跑状态 " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > 一旦在附身状态攻击,奔跑状态会被取消 "; string text2 = "..于是它离开了,仍在寻找它弄丢的主人。"; string text3 = "..and so she vanished, off to wait for another gray screen."; LanguageAPI.Add("YUUMI_NAME", "Yuumi"); LanguageAPI.Add("YUUMI_DESCRIPTION", text); LanguageAPI.Add("YUUMI_SUBTITLE", ""); LanguageAPI.Add("YUUMI_OUTRO", text2); LanguageAPI.Add("YUUMI_FAIL", text3); SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>(); val.cachedName = "YUUMI_NAME"; val.unlockableDef = null; val.descriptionToken = "YUUMI_DESCRIPTION"; val.primaryColor = characterColor; val.bodyPrefab = characterPrefab; val.displayPrefab = Utils.NewDisplayModel(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "YuumiDisplay"); val.outroFlavorToken = "YUUMI_OUTRO"; val.desiredSortPosition = 16f; val.mainEndingEscapeFailureFlavorToken = "YUUMI_FAIL"; ContentAddition.AddSurvivorDef(val); SkillSetup(); GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoMonsterMaster.prefab").WaitForCompletion(), "YuumiMaster", true); ContentAddition.AddMaster(val2); CharacterMaster component = val2.GetComponent<CharacterMaster>(); component.bodyPrefab = characterPrefab; } private void RegisterStates() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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) bool flag = default(bool); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<SecondaryBuff>(ref flag); ContentAddition.AddEntityState<SecondaryAlt>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<UtilityDash>(ref flag); ContentAddition.AddEntityState<UtilityEnd>(ref flag); ContentAddition.AddEntityState<DashTowardsBody>(ref flag); ContentAddition.AddEntityState<Special>(ref flag); ContentAddition.AddEntityState<SpecialAlt>(ref flag); ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<AttachState>(ref flag); ContentAddition.AddEntityState<Cancel>(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("YUUMI_PASSIVE_NAME", "魔典之灵"); LanguageAPI.Add("YUUMI_PASSIVE_DESCRIPTION", "魔典庇护悠米,使其免受掉落伤害。"); component.passiveSkill.enabled = false; component.passiveSkill.skillNameToken = "YUUMI_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "YUUMI_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumiw2"); } private void PrimarySetup() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Expected O, but got Unknown //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("YUUMI_M1", "摸鱼飞弹"); LanguageAPI.Add("YUUMI_M1_DESCRIPTION", "悠米快速发射一道法术飞弹,造成<style=cIsDamage>150%</style>伤害。在附身时,这个技能会得到强化。\n强化飞弹\n悠米发射一道追踪飞弹,造成<style=cIsDamage>600%</style>伤害。"); LanguageAPI.Add("YUUMI_M1ALT", "摸鱼飞弹(强化)"); LanguageAPI.Add("YUUMI_M1ALT_DESCRIPTION", "悠米发射一道追踪飞弹,造成<style=cIsDamage>600%</style>伤害。"); YuumiSkillDef yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(Primary)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Weapon"; ((SkillDef)yuumiSkillDef).baseMaxStock = 0; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 0f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = true; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = true; ((SkillDef)yuumiSkillDef).mustKeyPress = false; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = true; ((SkillDef)yuumiSkillDef).rechargeStock = 0; ((SkillDef)yuumiSkillDef).requiredStock = 0; ((SkillDef)yuumiSkillDef).stockToConsume = 0; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumiq"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_M1_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_M1"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_M1"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); component.primary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val); SkillFamily skillFamily = component.primary.skillFamily; Variant[] variants = skillFamily.variants; Variant val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants[0] = val2; ContentAddition.AddSkillFamily(skillFamily); AttachBehaviour.primaryOverride = (SkillDef)(object)ScriptableObject.CreateInstance<YuumiSkillDef>(); AttachBehaviour.primaryOverride.activationState = new SerializableEntityStateType(typeof(Primary)); AttachBehaviour.primaryOverride.activationStateMachineName = "Weapon"; AttachBehaviour.primaryOverride.baseMaxStock = 1; AttachBehaviour.primaryOverride.baseRechargeInterval = 3f; AttachBehaviour.primaryOverride.beginSkillCooldownOnSkillEnd = false; AttachBehaviour.primaryOverride.canceledFromSprinting = false; AttachBehaviour.primaryOverride.fullRestockOnAssign = true; AttachBehaviour.primaryOverride.interruptPriority = (InterruptPriority)0; AttachBehaviour.primaryOverride.isCombatSkill = true; AttachBehaviour.primaryOverride.mustKeyPress = false; AttachBehaviour.primaryOverride.cancelSprintingOnActivation = true; AttachBehaviour.primaryOverride.rechargeStock = 1; AttachBehaviour.primaryOverride.requiredStock = 1; AttachBehaviour.primaryOverride.stockToConsume = 1; AttachBehaviour.primaryOverride.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumiq2"); AttachBehaviour.primaryOverride.skillDescriptionToken = "YUUMI_M1ALT_DESCRIPTION"; AttachBehaviour.primaryOverride.skillName = "YUUMI_M1ALT"; AttachBehaviour.primaryOverride.skillNameToken = "YUUMI_M1ALT"; ContentAddition.AddSkillDef(AttachBehaviour.primaryOverride); } private void SecondarySetup() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Expected O, but got Unknown //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("YUUMI_M2", "旺盛精力"); LanguageAPI.Add("YUUMI_M2_DESCRIPTION", "悠米获得相当于悠米<style=cIsHealth>20%最大生命值</style>的<style=cIsDamage>屏障</style>,并获得<style=cIsDamage>75%(+1% 每 10%暴击率)攻速</style>和<style=cIsDamage>20%加速</style>。在附身时,这个技能会转而影响附身的友军,并且屏障会额外增加(相当于该友军20%最大生命值)。"); LanguageAPI.Add("YUUMI_M2ALT", "最佳搭档"); LanguageAPI.Add("YUUMI_M2ALT_DESCRIPTION", "悠米治疗相当于悠米<style=cIsHealth>15%最大生命值</style>,并获得<style=cIsDamage>30%加速</style>以及<style=cIsDamage>0%(+ 10% 每 100点 最大生命值)伤害增幅</style>。在附身时,这个技能会转而影响附身的友军,并且治疗量会增加(相当于目标友军15%最大生命值)。"); YuumiSkillDef yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(Secondary)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Slide"; ((SkillDef)yuumiSkillDef).baseMaxStock = 1; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 20f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = false; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = false; ((SkillDef)yuumiSkillDef).mustKeyPress = true; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = false; ((SkillDef)yuumiSkillDef).rechargeStock = 1; ((SkillDef)yuumiSkillDef).requiredStock = 1; ((SkillDef)yuumiSkillDef).stockToConsume = 1; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumip"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_M2_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_M2"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_M2"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); component.secondary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val); SkillFamily skillFamily = component.secondary.skillFamily; Variant[] variants = skillFamily.variants; Variant val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants[0] = val2; ContentAddition.AddSkillFamily(skillFamily); yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(SecondaryAlt)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Slide"; ((SkillDef)yuumiSkillDef).baseMaxStock = 1; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 20f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = false; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = true; ((SkillDef)yuumiSkillDef).mustKeyPress = true; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = false; ((SkillDef)yuumiSkillDef).rechargeStock = 1; ((SkillDef)yuumiSkillDef).requiredStock = 1; ((SkillDef)yuumiSkillDef).stockToConsume = 1; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("Yuumi_Zoomies_old"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_M2ALT_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_M2ALT"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_M2ALT"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants2 = skillFamily.variants; int num = skillFamily.variants.Length - 1; val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef, unlockableDef = null }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants2[num] = val2; } private void UtilitySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("YUUMI_UTIL", "悠米出动"); LanguageAPI.Add("YUUMI_UTIL_DESCRIPTION", "悠米<style=cIsUtility>附身</style>至目标友军。如果目标是非玩家角色,悠米会将自己的物品复制给目标。如果没有目标,悠米转而向前冲刺一段距离。"); YuumiSkillDef yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(Utility)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Attach"; ((SkillDef)yuumiSkillDef).baseMaxStock = 1; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 5f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = false; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = false; ((SkillDef)yuumiSkillDef).mustKeyPress = true; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = false; ((SkillDef)yuumiSkillDef).rechargeStock = 1; ((SkillDef)yuumiSkillDef).requiredStock = 1; ((SkillDef)yuumiSkillDef).stockToConsume = 1; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumiw"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_UTIL_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_UTIL"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_UTIL"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); component.utility = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.utility, "_skillFamily", val); SkillFamily skillFamily = component.utility.skillFamily; Variant[] variants = skillFamily.variants; Variant val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants[0] = val2; ContentAddition.AddSkillFamily(skillFamily); } 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) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Expected O, but got Unknown //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("YUUMI_SPEC", "魔典终章"); LanguageAPI.Add("YUUMI_SPEC_DESCRIPTION", "悠米在<style=cIsUtility>3.5</style>秒内向指定方向发射7道冲击波,每道冲击波造成<style=cIsDamage>200%</style>伤害。"); LanguageAPI.Add("YUUMI_SPECALT", "终末魔典"); LanguageAPI.Add("YUUMI_SPECALT_DESCRIPTION", "悠米在<style=cIsUtility>3.5</style>秒内向指定方向发射5道冲击波,每道冲击波造成<style=cIsDamage>280%</style>伤害并减速敌人。"); YuumiSkillDef yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(Special)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Attach"; ((SkillDef)yuumiSkillDef).baseMaxStock = 1; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 8f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = false; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = true; ((SkillDef)yuumiSkillDef).mustKeyPress = true; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = false; ((SkillDef)yuumiSkillDef).rechargeStock = 1; ((SkillDef)yuumiSkillDef).requiredStock = 1; ((SkillDef)yuumiSkillDef).stockToConsume = 1; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumir"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_SPEC_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_SPEC"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_SPEC"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); component.special = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.special, "_skillFamily", val); SkillFamily skillFamily = component.special.skillFamily; Variant[] variants = skillFamily.variants; Variant val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants[0] = val2; ContentAddition.AddSkillFamily(skillFamily); yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(SpecialAlt)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Slide"; ((SkillDef)yuumiSkillDef).baseMaxStock = 1; ((SkillDef)yuumiSkillDef).baseRechargeInterval = 8f; ((SkillDef)yuumiSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)yuumiSkillDef).canceledFromSprinting = false; ((SkillDef)yuumiSkillDef).fullRestockOnAssign = false; ((SkillDef)yuumiSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)yuumiSkillDef).isCombatSkill = true; ((SkillDef)yuumiSkillDef).mustKeyPress = true; ((SkillDef)yuumiSkillDef).cancelSprintingOnActivation = false; ((SkillDef)yuumiSkillDef).rechargeStock = 1; ((SkillDef)yuumiSkillDef).requiredStock = 1; ((SkillDef)yuumiSkillDef).stockToConsume = 1; ((SkillDef)yuumiSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumip2"); ((SkillDef)yuumiSkillDef).skillDescriptionToken = "YUUMI_SPECALT_DESCRIPTION"; ((SkillDef)yuumiSkillDef).skillName = "YUUMI_SPECALT"; ((SkillDef)yuumiSkillDef).skillNameToken = "YUUMI_SPECALT"; ContentAddition.AddSkillDef((SkillDef)(object)yuumiSkillDef); Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants2 = skillFamily.variants; int num = skillFamily.variants.Length - 1; val2 = new Variant { skillDef = (SkillDef)(object)yuumiSkillDef, unlockableDef = null }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)yuumiSkillDef).skillNameToken, false, (Node)null); variants2[num] = val2; } } internal class Prefabs { internal static GameObject ultHitEffect; internal static GameObject attackHitEffect; internal static GameObject projectileHitEffect; internal static GameObject yuumiAttackProjectile; internal static GameObject yuumiAttackProjectileGhost; internal static GameObject yuumiProwlingProjectile; internal static GameObject yuumiProwlingProjectileGhost; internal static GameObject yuumiUltProjectile; internal static GameObject yuumiUltProjectileGhost; internal static GameObject yuumiUltIndicator; internal static GameObject yuumiHealEffect; internal static GameObject yuumiShieldEffect; internal static GameObject AttachEffect; internal static GameObject attachAttachment; internal static GameObject DashTrailEffect; internal static GameObject DashTrailEffectQuick; internal static GameObject projectileHitEffectWeak; internal static GameObject yuumiIndicator; internal static LoopSoundDef projectileLoopDef; internal static BuffDef zoom; internal static BuffDef zoomies; internal static void CreatePrefabs() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0585: Unknown result type (might be due to invalid IL or missing references) //IL_058a: Unknown result type (might be due to invalid IL or missing references) //IL_05f6: Unknown result type (might be due to invalid IL or missing references) //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_065f: Unknown result type (might be due to invalid IL or missing references) //IL_0664: 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) //IL_0141: 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_016c: Unknown result type (might be due to invalid IL or missing references) projectileLoopDef = ScriptableObject.CreateInstance<LoopSoundDef>(); projectileLoopDef.startSoundName = "Play_Yuumi_Projectile_Mis"; zoom = ScriptableObject.CreateInstance<BuffDef>(); zoom.iconSprite = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumip2"); zoom.canStack = false; zoom.buffColor = Color.white; ContentAddition.AddBuffDef(zoom); zoomies = ScriptableObject.CreateInstance<BuffDef>(); zoomies.iconSprite = Assets.MainAssetBundle.LoadAsset<Sprite>("yuumip2"); zoomies.canStack = false; zoomies.buffColor = Color.white; ContentAddition.AddBuffDef(zoomies); yuumiIndicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressTrackingIndicator.prefab").WaitForCompletion(), "YuumiIndicator", false); SpriteRenderer[] componentsInChildren = yuumiIndicator.GetComponentsInChildren<SpriteRenderer>(); foreach (SpriteRenderer val in componentsInChildren) { val.color = Color.clear; if (((Component)val).transform.parent.GetSiblingIndex() == 0) { val.sprite = Assets.MainAssetBundle.LoadAsset<Sprite>("indicator2"); ((Component)val).transform.localPosition = Vector3.zero; ((Component)val).transform.localScale = Vector3.one * 0.1f; val.color = new Color(1f, 1f, 1f, 0.21569f); } } DashTrailEffect = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("DashTrailEffect"), "YuumiAttachTrailEffect", false); Utils.RegisterEffect(DashTrailEffect, 1.2f); DashTrailEffectQuick = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("DashTrailEffect"), "YuumiDashrailEffectQuick", false); Utils.RegisterEffect(DashTrailEffectQuick, 0.55f); AttachEffect = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("AttachEffect"), "YuumiAttachEffect", false); AttachEffect.AddComponent<DestroyOnTimer>().duration = 2f; yuumiHealEffect = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("HealEffect"), "YuumiHealEffect", false); yuumiShieldEffect = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("ShieldEffect"), "YuumiShieldEffect", false); yuumiUltIndicator = Assets.MainAssetBundle.LoadAsset<GameObject>("UltIndicator"); ultHitEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/OmniImpactVFXSlashSyringe.prefab").WaitForCompletion(), "YuumiUltHitEffect", false); Utils.RegisterEffect(ultHitEffect, 1f, "Play_Yuumi_R_Hit"); projectileHitEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXSlash.prefab").WaitForCompletion(), "YuumiProjectileHitEffect", false); Utils.RegisterEffect(projectileHitEffect, 1f, "Play_Yuumi_Projectile_Hit"); projectileHitEffectWeak = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXSlash.prefab").WaitForCompletion(), "YuumiProjectileHitEffectWeak", false); Utils.RegisterEffect(projectileHitEffectWeak, 1f, "Play_Yuumi_Projectile_Hit_Weak"); attackHitEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFX.prefab").WaitForCompletion(), "YuumiAttackHitEffect", false); Utils.RegisterEffect(attackHitEffect, 1f, "Play_Yuumi_Attack_Hit"); yuumiAttackProjectileGhost = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("BasicProjectile"), "YuumiBasicProjectileGhost", false); yuumiAttackProjectileGhost.AddComponent<ProjectileGhostController>(); yuumiAttackProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerPistolProjectile.prefab").WaitForCompletion(), "YuumiAttackProjectile", true); yuumiAttackProjectile.GetComponent<ProjectileController>().ghostPrefab = yuumiAttackProjectileGhost; yuumiAttackProjectile.GetComponent<ProjectileSimple>().lifetime = 1f; Object.Destroy((Object)(object)yuumiAttackProjectile.GetComponent<ProjectileDirectionalTargetFinder>()); yuumiAttackProjectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 80f; yuumiAttackProjectile.GetComponent<ProjectileSingleTargetImpact>().impactEffect = attackHitEffect; ContentAddition.AddProjectile(yuumiAttackProjectile); yuumiProwlingProjectileGhost = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("ProwlingProjectile"), "YuumiProwlingProjectileGhost", false); yuumiProwlingProjectileGhost.AddComponent<ProjectileGhostController>(); yuumiProwlingProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerPistolProjectile.prefab").WaitForCompletion(), "YuumiProwlingProjectile", true); ProjectileController component = yuumiProwlingProjectile.GetComponent<ProjectileController>(); component.ghostPrefab = yuumiProwlingProjectileGhost; yuumiProwlingProjectile.GetComponent<ProjectileSteerTowardTarget>().rotationSpeed = 90f; yuumiProwlingProjectile.GetComponent<ProjectileDirectionalTargetFinder>().lookRange = 25f; yuumiProwlingProjectile.GetComponent<ProjectileDirectionalTargetFinder>().lookCone = 20f; yuumiProwlingProjectile.GetComponent<ProjectileSimple>().lifetime = 1.4f; yuumiProwlingProjectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 80f; yuumiProwlingProjectile.GetComponent<ProjectileSingleTargetImpact>().impactEffect = projectileHitEffect; ContentAddition.AddProjectile(yuumiProwlingProjectile); yuumiUltProjectileGhost = PrefabAPI.InstantiateClone(Assets.MainAssetBundle.LoadAsset<GameObject>("UltProjectile"), "YuumiUltProjectile", false); ObjectScaleCurve val2 = ((Component)((Component)yuumiUltProjectileGhost.transform).GetComponent<ChildLocator>().FindChild("trail")).gameObject.AddComponent<ObjectScaleCurve>(); val2.timeMax = 0.23f; val2.useOverallCurveOnly = true; val2.overallCurve = AnimationCurve.Linear(0f, 0f, 1f, 1f); yuumiUltProjectileGhost.AddComponent<ProjectileGhostController>(); yuumiUltProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/FMJRamping.prefab").WaitForCompletion(), "YuumiUltProjectile", true); yuumiUltProjectile.GetComponent<ProjectileController>().ghostPrefab = yuumiUltProjectileGhost; yuumiUltProjectile.GetComponent<ProjectileSimple>().lifetime = 0.6f; Transform transform = ((Component)yuumiUltProjectile.GetComponent<HitBoxGroup>().hitBoxes[0]).gameObject.transform; transform.localScale = new Vector3(8f, 4f, 22f); transform.localPosition = new Vector3(0f, 0f, -8f); yuumiUltProjectile.GetComponent<ProjectileOverlapAttack>().impactEffect = ultHitEffect; ContentAddition.AddProjectile(yuumiUltProjectile); attachAttachment = Assets.MainAssetBundle.LoadAsset<GameObject>("attachment"); ((Renderer)attachAttachment.GetComponentInChildren<MeshRenderer>(true)).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/EliteEarth/matAffixEarthSphereIndicator.mat").WaitForCompletion(); } } internal class CharacterMain : GenericCharacterMain { } internal class MeleeSkillState : BaseSkillState { internal float hitPauseDuration; internal float hopVelocity = Assaulter.smallHopVelocity; internal string animParameter = ""; internal float hitPauseTimer; internal bool isInHitPause; internal HitStopCachedState hitStopCachedState; internal Animator animator; internal float stopwatch; internal OverlapAttack attack; internal bool hitCallback; internal float damage; internal GameObject hitEffectPrefab; internal HitBoxGroup hitBoxGroup; internal DamageType damageType = (DamageType)0; internal DamageColorIndex damageColor = (DamageColorIndex)0; internal Vector3 forceVector = Vector3.back * 100f; internal float attackStopwatch; public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); isInHitPause = false; hitPauseDuration = GroundLight.hitPauseDuration / ((BaseState)this).attackSpeedStat; } internal OverlapAttack NewOverlapAttack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) OverlapAttack val = new OverlapAttack(); val.procChainMask = default(ProcChainMask); val.procCoefficient = 1f; val.attacker = ((EntityState)this).gameObject; val.inflictor = ((EntityState)this).gameObject; val.teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex; val.damage = ((EntityState)this).characterBody.damage * damage; val.forceVector = forceVector; val.hitEffectPrefab = hitEffectPrefab; val.isCrit = ((EntityState)this).characterBody.RollCrit(); val.damageColorIndex = damageColor; val.damageType = damageType; val.maximumOverlapTargets = 100; val.hitBoxGroup = hitBoxGroup; return val; } public override void FixedUpdate() { //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.fixedDeltaTime; if (hitCallback && !isInHitPause) { if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, hopVelocity); } if (!Utility.IsNullOrWhiteSpace(animParameter)) { hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, animParameter); } hitPauseTimer = hitPauseDuration / ((BaseState)this).attackSpeedStat; isInHitPause = true; } if (!Utility.IsNullOrWhiteSpace(animParameter) && hitPauseTimer <= 0f && isInHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); isInHitPause = false; } if (!isInHitPause) { attackStopwatch += Time.fixedDeltaTime; stopwatch += Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)animator)) { animator.speed = 1f; } } else if (Object.op_Implicit((Object)(object)animator)) { animator.speed = 0f; } } } internal class Primary : YuumiState { private float duration; private float baseDuration = 0.45f; private float minFireDuration; private float baseFireDuration = 0.15f; private GameObject projectilePrefab; private float damageCoefficient = 1.5f; private string anim; private bool fired; public override void OnEnter() { base.OnEnter(); ((BaseState)this).StartAimMode(2f, false); duration = baseDuration / ((BaseState)this).attackSpeedStat; minFireDuration = baseFireDuration / ((BaseState)this).attackSpeedStat; anim = "Attack"; projectilePrefab = Prefabs.yuumiAttackProjectile; if (Object.op_Implicit((Object)(object)attachedBody)) { anim = "Attack"; projectilePrefab = Prefabs.yuumiProwlingProjectile; damageCoefficient = 6f; AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Projectile_Cast, ((EntityState)this).gameObject); } else { AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attack_Cast, ((EntityState)this).gameObject); } ((EntityState)this).PlayAnimation("FullBody, Override", anim, "M1", duration); } public override void FixedUpdate() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_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_006c: 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_00bd: 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_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= minFireDuration && !fired) { fired = true; Ray aimRay = ((BaseState)this).GetAimRay(); EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Muzzleflash1.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "pawMuzzle", false); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * damageCoefficient; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; val.position = ((Ray)(ref aimRay)).origin; val.procChainMask = default(ProcChainMask); val.projectilePrefab = projectilePrefab; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class SecondaryBuff : YuumiState { private float duration; private float baseDuration = 0.65f; public BuffDef buff; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; string text = "HealDetached"; if (Object.op_Implicit((Object)(object)attachedBody)) { text = "HealAttached"; if (NetworkServer.active) { attachedBody.AddTimedBuff(buff, 12f); } } else if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(buff, 12f); } ((EntityState)this).PlayAnimation("FullBody, Override", text, "M2", duration); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Heal, ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class Secondary : SecondaryBuff { public override void OnEnter() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) buff = Prefabs.zoomies; base.OnEnter(); Vector3 zero = Vector3.zero; Transform transform; if (Object.op_Implicit((Object)(object)attachedBody)) { transform = ((Component)attachedBody).transform; zero = attachedBody.corePosition; } else { transform = ((EntityState)this).transform; zero = ((EntityState)this).characterBody.corePosition; } GameObject obj = Object.Instantiate<GameObject>(Prefabs.yuumiShieldEffect, transform.position, Quaternion.identity, (Transform)null); obj.transform.localPosition = zero; obj.transform.SetParent(transform); Object.Destroy((Object)(object)obj, 2f); float num = ((EntityState)this).healthComponent.fullHealth * 0.2f; if (NetworkServer.active) { if (Object.op_Implicit((Object)(object)attachedBody)) { attachedBody.healthComponent.AddBarrier(attachedBody.healthComponent.fullHealth * 0.2f + num); } else { ((EntityState)this).healthComponent.AddBarrier(num); } } } 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 SecondaryAlt : SecondaryBuff { public override void OnEnter() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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_00d8: 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_00c0: Unknown result type (might be due to invalid IL or missing references) buff = Prefabs.zoom; base.OnEnter(); Transform val = ((!Object.op_Implicit((Object)(object)attachedBody)) ? ((EntityState)this).transform : ((Component)attachedBody).transform); GameObject obj = Object.Instantiate<GameObject>(Prefabs.yuumiHealEffect, val.position, Quaternion.identity, (Transform)null); obj.transform.SetParent(val); obj.transform.localPosition = Vector3.zero; Object.Destroy((Object)(object)obj, 2f); float num = ((EntityState)this).healthComponent.fullHealth * 0.15f; if (NetworkServer.active) { if (Object.op_Implicit((Object)(object)attachedBody)) { attachedBody.healthComponent.Heal(attachedBody.healthComponent.fullHealth * 0.15f + num, default(ProcChainMask), true); } else { ((EntityState)this).healthComponent.Heal(num, default(ProcChainMask), true); } } } 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 Special : YuumiState { private float duration; public float baseDuration = 3.5f; public int waveCount = 7; private int firedCount = 0; private float stopwatch; public GameObject projectilePrefab = Prefabs.yuumiUltProjectile; public DamageType damageType = (DamageType)0; public float damageCoefficient = 2f; private Vector3 direction; private Transform childTransform; private GameObject indicator; private Transform indicatorChild; public override void OnEnter() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); indicator = Object.Instantiate<GameObject>(Prefabs.yuumiUltIndicator, ((EntityState)this).transform); indicator.transform.localPosition = Vector3.zero; indicatorChild = indicator.transform.GetChild(0); ((BaseState)this).StartAimMode(duration, false); duration = baseDuration / Mathf.Clamp(((BaseState)this).attackSpeedStat, 1f, 16f); Ray aimRay = ((BaseState)this).GetAimRay(); direction = ((Ray)(ref aimRay)).direction; childTransform = ((BaseState)this).FindModelChild("pawMuzzle"); Fire(); ((EntityState)this).PlayAnimation("FullBody, Override", "Ult", "Special", 0.45f); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_R_Cast, ((EntityState)this).gameObject); behaviour.canExecutePrimary = false; CameraZoomOut(); } public override void Update() { //IL_001e: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)indicatorChild)) { Quaternion val = Quaternion.LookRotation(((EntityState)this).inputBank.aimDirection, Vector3.up); Vector3 eulerAngles = ((Quaternion)(ref val)).eulerAngles; indicatorChild.localRotation = Quaternion.Euler(0f, eulerAngles.y, 0f); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); UpdateDirection(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration / (float)waveCount && firedCount < waveCount) { stopwatch = 0f; Fire(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } protected virtual void UpdateDirection() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) Ray aimRay = ((BaseState)this).GetAimRay(); direction = ((Ray)(ref aimRay)).direction; Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.aimDirection); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = new Vector3(val.x, 0f, val.y); Vector3 normalized = ((Vector3)(ref val2)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = normalized; } } } private void Fire() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: 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_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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0116: 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_013d: 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_0144: Unknown result type (might be due to invalid IL or missing references) firedCount++; ((EntityState)this).PlayAnimation("Ult, Override", "UltFire", "Special", 0.4f); EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Muzzleflash1.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "bookMuzzle", false); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_R_MisCast, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * damageCoefficient; val.damageTypeOverride = damageType; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; Ray aimRay = ((BaseState)this).GetAimRay(); val.position = ((Ray)(ref aimRay)).origin + direction * 8f; val.procChainMask = default(ProcChainMask); val.projectilePrefab = projectilePrefab; val.rotation = Util.QuaternionSafeLookRotation(direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } public override void OnExit() { ((EntityState)this).OnExit(); CameraZoomIn(); behaviour.canExecutePrimary = true; if (Object.op_Implicit((Object)(object)indicator)) { EntityState.Destroy((Object)(object)indicator); } ((EntityState)this).GetModelAnimator().SetTrigger("ultOver"); } 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 SpecialAlt : Special { protected override void UpdateDirection() { } public override void OnEnter() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) waveCount = 5; damageType = (DamageType)8; damageCoefficient = 2.8f; base.OnEnter(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class Utility : YuumiState { public override void OnEnter() { base.OnEnter(); if (((!Object.op_Implicit((Object)(object)behaviour.target) && !behaviour.isAttached) || !((EntityState)this).characterBody.isPlayerControlled) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityDash()); } else if (Object.op_Implicit((Object)(object)attachedBody)) { if (!Object.op_Implicit((Object)(object)behaviour.target)) { AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Detach, ((EntityState)this).gameObject); behaviour.Detach(); if (((EntityState)this).isAuthority) { ((EntityState)this).GetComponent<EntityStateMachine>().SetNextStateToMain(); ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityEnd()); } } else if ((Object)(object)behaviour.target.healthComponent.body != (Object)(object)attachedBody) { EntityStateMachine component = ((EntityState)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)component) && component.state is AttachState attachState) { attachState.setPos = false; } behaviour.Detach(behaviour.target.healthComponent.body); Attach(); } } else { Attach(); } } private void Attach() { behaviour.Attach(); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DashTowardsBody()); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); } 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 UtilityDash : YuumiState { private Vector3 direction; public float duration = 0.25f; private AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); private float speed = 12f; public override void OnEnter() { //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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Attach", "Utility", duration); CharacterBody component = ((EntityState)this).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.currentVehicle) && NetworkServer.active) { component.currentVehicle.EjectPassenger(); } if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); } AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attach_Cast, ((EntityState)this).gameObject); Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); direction = ((Vector3)(ref val)).normalized; EffectManager.SimpleMuzzleFlash(Prefabs.DashTrailEffectQuick, ((EntityState)this).gameObject, "neck", false); } public override void FixedUpdate() { //IL_005c: 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_0075: 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) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = true; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { float num = curve.Evaluate(((EntityState)this).fixedAge / duration) * speed; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += direction * (((BaseState)this).moveSpeedStat * num * Time.fixedDeltaTime); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).GetModelAnimator().SetTrigger("dashSkip"); } 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 DashTowardsBody : YuumiState { private Transform position; private float speed = 15f; private bool isAttached; private EntityStateMachine stateMachine; private AttachState state; public override void OnEnter() { base.OnEnter(); stateMachine = ((EntityState)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)stateMachine) && (state = stateMachine.state as AttachState) != null) { isAttached = true; state.setPos = false; } EffectManager.SimpleMuzzleFlash(Prefabs.DashTrailEffect, ((EntityState)this).gameObject, "neck", false); ((EntityState)this).skillLocator.utility.RunRecharge(4.5f); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attach_Cast, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("FullBody, Override", "Attach", "Utility", 0.4f); position = behaviour.attachmentPosition; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(); ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 100f); CameraZoomOut(); } private Vector3 direction() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) Vector3 val = position.position - ((EntityState)this).transform.position; return ((Vector3)(ref val)).normalized; } public override void FixedUpdate() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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_00c4: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)position)) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Vector3.Distance(((EntityState)this).transform.position, position.position) > 5f) { Vector3 val = direction(); ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += val * ((BaseState)this).moveSpeedStat * speed * Time.fixedDeltaTime; Vector2 val2 = Util.Vector3XZToVector2XY(val); if (val2 != Vector2.zero) { ((Vector2)(ref val2)).Normalize(); Vector3 val3 = new Vector3(val2.x, 0f, val2.y); Vector3 normalized = ((Vector3)(ref val3)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = normalized; } } return; } if (isAttached && state != null) { state.setPos = true; } if (((EntityState)this).isAuthority) { if (!isAttached) { stateMachine.SetNextState((EntityState)(object)new AttachState()); } ((EntityState)this).outer.SetNextS