Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Yuumi v1.0.1
Yuumi.dll
Decompiled 11 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Merc; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2.Projectile; using R2API; using R2API.Utils; using RoR2; using RoR2.Audio; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", 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 x) => x.hurtBox.healthComponent.body.teamComponent.teamIndex == teamIndex).ToList(); } } 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 => 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() { 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(); } } 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.5f; } if (sender.HasBuff(Prefabs.zoomies)) { args.moveSpeedMultAdd += 0.4f; args.attackSpeedMultAdd += 0.35f; } } } [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_08ba: Unknown result type (might be due to invalid IL or missing references) //IL_0976: Unknown result type (might be due to invalid IL or missing references) //IL_097b: Unknown result type (might be due to invalid IL or missing references) //IL_09a9: Unknown result type (might be due to invalid IL or missing references) //IL_09ae: Unknown result type (might be due to invalid IL or missing references) //IL_09d7: Unknown result type (might be due to invalid IL or missing references) //IL_09dc: Unknown result type (might be due to invalid IL or missing references) //IL_09ed: Unknown result type (might be due to invalid IL or missing references) //IL_09f2: 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<TemporaryOverlayInstance>(); 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] { Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_DEFAULT_SKIN_NAME", "base", array)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN01_NAME", "skin01", array)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN02_NAME", "skin02", array)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN03_NAME", "skin03", array)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN04_NAME", "skin04", array)), Skins.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN05_NAME", "skin05", array)), Skins.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 = (ICharacterController)(object)component3; component14.playerCharacter = true; 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 = "..and so she left, still looking for her master."; 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", "Magical Cat"); 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) //IL_006b: 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); ContentAddition.AddEntityState<YuumiState>(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", "Book of Thresholds"); LanguageAPI.Add("YUUMI_PASSIVE_DESCRIPTION", "Book protects Yuumi from high heights, granting her <style=cIsUtility>immunity</style> to fall damage."); 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", "Zooming Projectile"); LanguageAPI.Add("YUUMI_M1_DESCRIPTION", "Yuumi fires a quick missile for <style=cIsDamage>150% damage</style>."); LanguageAPI.Add("YUUMI_M1ALT", "Prowling Projectile"); LanguageAPI.Add("YUUMI_M1ALT_DESCRIPTION", "Yuumi fires an errant a quick missile for <style=cIsDamage>600% damage</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", "Zoomies"); LanguageAPI.Add("YUUMI_M2_DESCRIPTION", "Yuumi grants a temporary <style=cIsHealing>barrier</style> of <style=cIsHealth>20% health</style>, <style=cIsDamage>35% attack speed</style> and <style=cIsUtility>40% movement speed</style>. While attached, the buffs are granted to the ally instead."); LanguageAPI.Add("YUUMI_M2ALT", "Best Friend"); LanguageAPI.Add("YUUMI_M2ALT_DESCRIPTION", "Yuumi <style=cIsHealing>heals</style> for <style=cIsHealth>20% health</style> and gains <style=cIsUtility>50% movement speed</style>. While attached, the buffs are granted to the ally instead."); YuumiSkillDef yuumiSkillDef = ScriptableObject.CreateInstance<YuumiSkillDef>(); ((SkillDef)yuumiSkillDef).activationState = new SerializableEntityStateType(typeof(Secondary)); ((SkillDef)yuumiSkillDef).activationStateMachineName = "Slide"; ((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>("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 = 5f; ((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", "You and Me!"); LanguageAPI.Add("YUUMI_UTIL_DESCRIPTION", "Yuumi <style=cIsUtility>attaches</style> to the targetted ally, granting her items while attached to <style=cIsDamage>NPC's</style>. If there are no targetted allies, Yuumi dashes forward instead."); 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", "Final Chapter"); LanguageAPI.Add("YUUMI_SPEC_DESCRIPTION", "Yuumi and Book channel for <style=cIsUtility>3.5s</style> to barrage 7 waves in the target direction that each deal <style=cIsDamage>200% damage</style> to enemies hit."); LanguageAPI.Add("YUUMI_SPECALT", "Final Paw"); LanguageAPI.Add("YUUMI_SPECALT_DESCRIPTION", "Yuumi and Book channel for <style=cIsUtility>3.5s</style>, launching 5 waves in the target direction that each deal <style=cIsDamage>280% damage</style> and <style=cIsDamage>slows</style> enemies hit."); 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) //IL_00a5: 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 = DamageTypeCombo.op_Implicit(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, 0f); } 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, 5f); } } else if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(buff, 5f); } ((EntityState)this).PlayAnimation("FullBody, Override", text, "M2", duration, 0f); 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) buff = Prefabs.zoomies; base.OnEnter(); Transform val = null; Vector3 zero = Vector3.zero; if (Object.op_Implicit((Object)(object)attachedBody)) { val = attachedBody.transform; zero = attachedBody.corePosition; } else { val = ((EntityState)this).transform; zero = ((EntityState)this).characterBody.corePosition; } GameObject val2 = Object.Instantiate<GameObject>(Prefabs.yuumiShieldEffect, val.position, Quaternion.identity, (Transform)null); val2.transform.localPosition = zero; val2.transform.SetParent(val); Object.Destroy((Object)(object)val2, 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); } 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_00d7: Unknown result type (might be due to invalid IL or missing references) buff = Prefabs.zoom; base.OnEnter(); Transform val = null; val = ((!Object.op_Implicit((Object)(object)attachedBody)) ? ((EntityState)this).transform : attachedBody.transform); GameObject val2 = Object.Instantiate<GameObject>(Prefabs.yuumiHealEffect, val.position, Quaternion.identity, (Transform)null); val2.transform.SetParent(val); val2.transform.localPosition = Vector3.zero; Object.Destroy((Object)(object)val2, 2f); float num = ((EntityState)this).healthComponent.fullHealth * 0.2f; if (NetworkServer.active) { if (Object.op_Implicit((Object)(object)attachedBody)) { attachedBody.healthComponent.Heal(attachedBody.healthComponent.fullHealth * 0.2f, 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) //IL_0090: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) 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; Quaternion val = Quaternion.LookRotation(direction, Vector3.up); Vector3 eulerAngles = ((Quaternion)(ref val)).eulerAngles; indicatorChild.localRotation = Quaternion.Euler(0f, eulerAngles.y, 0f); childTransform = ((BaseState)this).FindModelChild("pawMuzzle"); Fire(); ((EntityState)this).PlayAnimation("FullBody, Override", "Ult", "Special", 0.45f, 0f); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_R_Cast, ((EntityState)this).gameObject); behaviour.canExecutePrimary = false; CameraZoomOut(); } public override void Update() { ((EntityState)this).Update(); UpdateIndicator(); } protected virtual void UpdateIndicator() { //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_0021: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_014e: Unknown result type (might be due to invalid IL or missing references) firedCount++; ((EntityState)this).PlayAnimation("Ult, Override", "UltFire", "Special", 0.4f, 0f); 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 = DamageTypeCombo.op_Implicit(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 UpdateIndicator() { } 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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00c1: 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_00c9: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Attach", "Utility", duration, 0f); 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, 0f); position = behaviour.attachmentPosition; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((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.SetNextState((EntityState)(object)new UtilityEnd()); } } else if (((EntityState)this).fixedAge >= 0.5f && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityEnd()); } } public override void OnExit() { ((EntityState)this).OnExit(); behaviour.canExecute = true; ((EntityState)this).GetModelAnimator().SetTrigger("attachOver"); } 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 UtilityEnd : YuumiState { private float duration = 0.5f; public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class AttachState : GenericCharacterMain { private AttachBehaviour behaviour; private Transform position; public bool setPos = true; public override void OnEnter() { //IL_00c8: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterMain)this).OnEnter(); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attach, ((EntityState)this).gameObject); ((BaseCharacterMain)this).modelAnimator.SetBool("attached", true); ((BaseCharacterMain)this).modelAnimator.SetBool("isSprinting", false); ((BaseCharacterMain)this).modelAnimator.SetBool("isMoving", false); ((EntityState)this).PlayAnimation("Gesture, Override", "Idle"); behaviour = ((EntityState)this).GetComponent<AttachBehaviour>(); if (Object.op_Implicit((Object)(object)behaviour) && behaviour.isAttached) { behaviour.canExecute = true; position = behaviour.attachmentPosition; Object.Instantiate<GameObject>(Prefabs.AttachEffect, behaviour.AttachedBody.transform).transform.localPosition = Vector3.zero; behaviour.aimRequest.Dispose(); } ((EntityState)this).gameObject.layer = LayerIndex.fakeActor.intVal; int hurtBoxesDeactivatorCounter = ((EntityState)this).characterBody.mainHurtBox.hurtBoxGroup.hurtBoxesDeactivatorCounter + 1; ((EntityState)this).characterBody.mainHurtBox.hurtBoxGroup.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } public override void UpdateAnimationParameters() { } public override void ProcessJump() { } public override void HandleMovements() { //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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_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_004b: 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 re