Decompiled source of Yuumi v1.0.3
Yuumi.dll
Decompiled 5 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.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Yuumi")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Yuumi")] [assembly: AssemblyTitle("Yuumi")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Yuumi; internal class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Yuumi.yuumiassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Yuumi.Yuumi.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class YuumiSkillDef : SkillDef { private class InstanceData : BaseSkillInstanceData { public AttachBehaviour behaviour; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { behaviour = ((Component)skillSlot).GetComponent<AttachBehaviour>() }; } internal static bool IsExecutable([NotNull] GenericSkill skillSlot) { AttachBehaviour behaviour = ((InstanceData)(object)skillSlot.skillInstanceData).behaviour; SkillLocator component = ((Component)skillSlot).GetComponent<SkillLocator>(); if (component.GetSkillSlotIndex(skillSlot) == 0) { return behaviour.canExecutePrimary; } return behaviour.canExecute; } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return IsExecutable(skillSlot) && ((SkillDef)this).CanExecute(skillSlot); } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && IsExecutable(skillSlot); } } internal static class BullseyeBossFilter { public static void FilterOutEnemies(this BullseyeSearch b, TeamIndex teamIndex) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) b.candidatesEnumerable = b.candidatesEnumerable.Where((CandidateInfo v) => v.hurtBox.healthComponent.body.teamComponent.teamIndex == teamIndex); } } internal class AttachBehaviour : HuntressTracker { internal static SkillDef primaryOverride; private CharacterBody attachedBody; public bool enable = true; public bool canExecute = true; public bool canExecutePrimary = true; private float stopwatch; private GameObject attachment; private Inventory inventory; private Inventory yuumiInventory; public AimRequest aimRequest; private List<ItemIndex> itemBlacklist; public CharacterBody AttachedBody => Object.op_Implicit((Object)(object)attachedBody) ? attachedBody : null; public Transform attachmentPosition => Object.op_Implicit((Object)(object)attachment) ? attachment.GetComponent<ChildLocator>().FindChild("position") : null; public bool isAttached => 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_08de: Unknown result type (might be due to invalid IL or missing references) //IL_08f5: Unknown result type (might be due to invalid IL or missing references) //IL_08fa: Unknown result type (might be due to invalid IL or missing references) //IL_0902: Unknown result type (might be due to invalid IL or missing references) //IL_0960: Unknown result type (might be due to invalid IL or missing references) //IL_0a1c: Unknown result type (might be due to invalid IL or missing references) //IL_0a21: Unknown result type (might be due to invalid IL or missing references) //IL_0a4f: Unknown result type (might be due to invalid IL or missing references) //IL_0a54: Unknown result type (might be due to invalid IL or missing references) //IL_0a7d: Unknown result type (might be due to invalid IL or missing references) //IL_0a82: Unknown result type (might be due to invalid IL or missing references) //IL_0a93: Unknown result type (might be due to invalid IL or missing references) //IL_0a98: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); characterPrefab = PrefabAPI.InstantiateClone(val, "YuumiBody", true); characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; characterPrefab.AddComponent<AttachBehaviour>(); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("ModelBase")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("CameraPivot")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("AimOrigin")).gameObject); GameObject val2 = Assets.MainAssetBundle.LoadAsset<GameObject>("yuumi"); GameObject val3 = new GameObject("ModelBase"); val3.transform.parent = characterPrefab.transform; val3.transform.localPosition = new Vector3(0f, -0.7f, 0f); val3.transform.localRotation = Quaternion.identity; val3.transform.localScale = new Vector3(1f, 1f, 1f); GameObject val4 = new GameObject("AimOrigin"); val4.transform.parent = val3.transform; val4.transform.localPosition = new Vector3(0f, 1f, 0f); val4.transform.localRotation = Quaternion.identity; val4.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val3.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>(); component.moveVector = Vector3.zero; component.targetTransform = val3.transform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = val2.GetComponentInChildren<Animator>(); component.driveFromRootRotation = false; component.turnSpeed = 720f; CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "YuumiBody"; component2.baseNameToken = "YUUMI_NAME"; component2.subtitleNameToken = "YUUMI_SUBTITLE"; component2.bodyFlags = (BodyFlags)17; component2.rootMotionInMainState = false; component2.mainRootSpeed = 0f; component2.baseMaxHealth = 100f; component2.levelMaxHealth = 35f; component2.baseRegen = 1f; component2.levelRegen = 0.33f; component2.baseMaxShield = 0f; component2.levelMaxShield = 0f; component2.baseMoveSpeed = 7f; component2.levelMoveSpeed = 0f; component2.baseAcceleration = 110f; component2.baseJumpPower = 15f; component2.levelJumpPower = 0f; component2.baseDamage = 12f; component2.levelDamage = 2.4f; component2.baseAttackSpeed = 1f; component2.levelAttackSpeed = 0f; component2.baseCrit = 1f; component2.levelCrit = 0f; component2.baseArmor = 0f; component2.levelArmor = 0f; component2.baseJumpCount = 1; component2.sprintingSpeedMultiplier = 1.45f; component2.wasLucky = false; component2.hideCrosshair = false; component2.aimOriginTransform = val4.transform; component2.hullClassification = (HullClassification)0; component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture; component2.isChampion = false; component2.currentVehicle = null; component2.skinIndex = 0u; component2.bodyColor = characterColor; CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>(); component3.walkSpeedPenaltyCoefficient = 1f; component3.characterDirection = component; component3.muteWalkMotion = false; component3.mass = 160f; component3.airControl = 0.25f; component3.disableAirControlUntilCollision = false; component3.generateParametersOnAwake = true; InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>(); component4.moveVector = Vector3.zero; CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>(); component5.cameraParams = val.GetComponent<CameraTargetParams>().cameraParams; component5.cameraPivotTransform = null; component5.recoil = Vector2.zero; component5.dontRaycastToPivot = false; ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>(); component6.modelTransform = transform; component6.modelBaseTransform = val3.transform; component6.dontReleaseModelOnDeath = false; component6.autoUpdateModelTransform = true; component6.dontDetatchFromParent = false; component6.noCorpse = false; component6.normalizeToFloor = false; component6.preserveModel = false; ChildLocator component7 = val2.GetComponent<ChildLocator>(); CharacterModel val5 = val2.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren[i], defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] array = list.ToArray(); val5.body = component2; val5.baseRendererInfos = array; val5.autoPopulateLightInfos = true; val5.invisibilityCount = 0; val5.temporaryOverlays = new List<TemporaryOverlay>(); Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val5, "mainSkinnedMeshRenderer", componentsInChildren[0]); GameObject gameObject = ((Component)transform).gameObject; CharacterModel component8 = gameObject.GetComponent<CharacterModel>(); ModelSkinController val6 = gameObject.AddComponent<ModelSkinController>(); ChildLocator component9 = gameObject.GetComponent<ChildLocator>(); LanguageAPI.Add("YUUMIBODY_DEFAULT_SKIN_NAME", "Default"); LanguageAPI.Add("YUUMIBODY_SKIN01_NAME", "Battle Principal"); LanguageAPI.Add("YUUMIBODY_SKIN02_NAME", "Heartseeker"); LanguageAPI.Add("YUUMIBODY_SKIN03_NAME", "Yuubee"); LanguageAPI.Add("YUUMIBODY_SKIN04_NAME", "Bewitching"); LanguageAPI.Add("YUUMIBODY_SKIN05_NAME", "EDG"); LanguageAPI.Add("YUUMIBODY_SKIN06_NAME", "Shiba"); val6.skins = (SkinDef[])(object)new SkinDef[7] { LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_DEFAULT_SKIN_NAME", "base", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN01_NAME", "skin01", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN02_NAME", "skin02", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN03_NAME", "skin03", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN04_NAME", "skin04", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN05_NAME", "skin05", array)), LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "YUUMIBODY_SKIN06_NAME", "skin06", array)) }; HealthComponent component10 = characterPrefab.GetComponent<HealthComponent>(); component10.health = component2.baseMaxHealth; component10.shield = 0f; component10.barrier = 0f; component10.magnetiCharge = 0f; component10.body = null; component10.dontShowHealthbar = false; component10.globalDeathEventChanceCoefficient = 1f; characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f; characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true; SfxLocator component11 = characterPrefab.GetComponent<SfxLocator>(); component11.deathSound = "Play_ui_player_death"; component11.barkSound = ""; component11.openSound = ""; component11.landingSound = ""; component11.fallDamageSound = "Play_char_land_fall_damage"; component11.aliveLoopStart = ""; component11.aliveLoopStop = ""; Rigidbody component12 = characterPrefab.GetComponent<Rigidbody>(); component12.mass = 100f; component12.drag = 0f; component12.angularDrag = 0f; component12.useGravity = false; component12.isKinematic = true; component12.interpolation = (RigidbodyInterpolation)0; component12.collisionDetectionMode = (CollisionDetectionMode)0; component12.constraints = (RigidbodyConstraints)0; CapsuleCollider component13 = ((Component)component7.FindChild("collider")).GetComponent<CapsuleCollider>(); ((Collider)component13).isTrigger = false; ((Collider)component13).material = null; KinematicCharacterMotor component14 = characterPrefab.GetComponent<KinematicCharacterMotor>(); component14.CharacterController = (BaseCharacterController)(object)component3; component14.Capsule = component13; component14.Rigidbody = component12; component14.DetectDiscreteCollisions = false; component14.GroundDetectionExtraDistance = 0f; component14.MaxStepHeight = 0.2f; component14.MinRequiredStepDepth = 0.1f; component14.MaxStableSlopeAngle = 55f; component14.MaxStableDistanceFromLedge = 0.5f; component14.PreventSnappingOnLedges = false; component14.MaxStableDenivelationAngle = 55f; component14.RigidbodyInteractionType = (RigidbodyInteractionType)0; component14.PreserveAttachedRigidbodyMomentum = true; component14.HasPlanarConstraint = false; component14.PlanarConstraintAxis = Vector3.up; component14.StepHandling = (StepHandlingMethod)0; component14.LedgeHandling = true; component14.InteractiveRigidbodyHandling = true; component14.SafeMovement = false; HurtBoxGroup val7 = val2.AddComponent<HurtBoxGroup>(); HurtBox val8 = ((Component)component13).gameObject.AddComponent<HurtBox>(); ((Component)val8).gameObject.layer = LayerIndex.entityPrecise.intVal; val8.healthComponent = component10; val8.isBullseye = true; val8.damageModifier = (DamageModifier)0; val8.hurtBoxGroup = val7; val8.indexInGroup = 0; val7.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val8 }; val7.mainHurtBox = val8; val7.bullseyeCount = 1; AimAnimator val9 = val2.AddComponent<AimAnimator>(); val9.inputBank = component4; val9.directionComponent = component; val9.pitchRangeMax = 55f; val9.pitchRangeMin = -50f; val9.yawRangeMin = -44f; val9.yawRangeMax = 44f; val9.pitchGiveupRange = 30f; val9.yawGiveupRange = 10f; val9.giveupDuration = 8f; EntityStateMachine component15 = ((Component)component2).GetComponent<EntityStateMachine>(); component15.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component16 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component16.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component16.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); EntityStateMachine val10 = characterPrefab.AddComponent<EntityStateMachine>(); val10.customName = "Attach"; val10.initialStateType = new SerializableEntityStateType(typeof(Idle)); val10.mainStateType = new SerializableEntityStateType(typeof(Idle)); NetworkStateMachine component17 = ((Component)component2).GetComponent<NetworkStateMachine>(); List<EntityStateMachine> list2 = component17.stateMachines.ToList(); list2.Add(val10); component17.stateMachines = list2.ToArray(); ContentAddition.AddBody(characterPrefab); } private void RegisterCharacter() { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) string text = "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > " + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > "; string text2 = "..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", ""); 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=cIsDamage>barrier</style> of <style=cIsHealth>20% health</style>, <style=cIsDamage>35% attack speed</style> and <style=cIsDamage>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=cIsDamage>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) OverlapAttack val = new OverlapAttack(); val.procChainMask = default(ProcChainMask); val.procCoefficient = 1f; val.attacker = ((EntityState)this).gameObject; val.inflictor = ((EntityState)this).gameObject; val.teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex; val.damage = ((EntityState)this).characterBody.damage * damage; val.forceVector = forceVector; val.hitEffectPrefab = hitEffectPrefab; val.isCrit = ((EntityState)this).characterBody.RollCrit(); val.damageColorIndex = damageColor; val.damageType = damageType; val.maximumOverlapTargets = 100; val.hitBoxGroup = hitBoxGroup; return val; } public override void FixedUpdate() { //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.fixedDeltaTime; if (hitCallback && !isInHitPause) { if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, hopVelocity); } if (!Utility.IsNullOrWhiteSpace(animParameter)) { hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, animParameter); } hitPauseTimer = hitPauseDuration / ((BaseState)this).attackSpeedStat; isInHitPause = true; } if (!Utility.IsNullOrWhiteSpace(animParameter) && hitPauseTimer <= 0f && isInHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); isInHitPause = false; } if (!isInHitPause) { attackStopwatch += Time.fixedDeltaTime; stopwatch += Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)animator)) { animator.speed = 1f; } } else if (Object.op_Implicit((Object)(object)animator)) { animator.speed = 0f; } } } internal class Primary : YuumiState { private float duration; private float baseDuration = 0.45f; private float minFireDuration; private float baseFireDuration = 0.15f; private GameObject projectilePrefab; private float damageCoefficient = 1.5f; private string anim; private bool fired; public override void OnEnter() { base.OnEnter(); ((BaseState)this).StartAimMode(2f, false); duration = baseDuration / ((BaseState)this).attackSpeedStat; minFireDuration = baseFireDuration / ((BaseState)this).attackSpeedStat; anim = "Attack"; projectilePrefab = Prefabs.yuumiAttackProjectile; if (Object.op_Implicit((Object)(object)attachedBody)) { anim = "Attack"; projectilePrefab = Prefabs.yuumiProwlingProjectile; damageCoefficient = 6f; AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Projectile_Cast, ((EntityState)this).gameObject); } else { AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attack_Cast, ((EntityState)this).gameObject); } ((EntityState)this).PlayAnimation("FullBody, Override", anim, "M1", duration); } public override void FixedUpdate() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= minFireDuration && !fired) { fired = true; Ray aimRay = ((BaseState)this).GetAimRay(); EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Muzzleflash1.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "pawMuzzle", false); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * damageCoefficient; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; val.position = ((Ray)(ref aimRay)).origin; val.procChainMask = default(ProcChainMask); val.projectilePrefab = projectilePrefab; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class SecondaryBuff : YuumiState { private float duration; private float baseDuration = 0.65f; public BuffDef buff; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; string text = "HealDetached"; if (Object.op_Implicit((Object)(object)attachedBody)) { text = "HealAttached"; if (NetworkServer.active) { attachedBody.AddTimedBuff(buff, 5f); } } else if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(buff, 5f); } ((EntityState)this).PlayAnimation("FullBody, Override", text, "M2", duration); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Heal, ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class Secondary : SecondaryBuff { public override void OnEnter() { //IL_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) base.OnEnter(); indicator = Object.Instantiate<GameObject>(Prefabs.yuumiUltIndicator, ((EntityState)this).transform); indicator.transform.localPosition = Vector3.zero; indicatorChild = indicator.transform.GetChild(0); ((BaseState)this).StartAimMode(duration, false); duration = baseDuration / Mathf.Clamp(((BaseState)this).attackSpeedStat, 1f, 16f); Ray aimRay = ((BaseState)this).GetAimRay(); direction = ((Ray)(ref aimRay)).direction; childTransform = ((BaseState)this).FindModelChild("pawMuzzle"); Fire(); ((EntityState)this).PlayAnimation("FullBody, Override", "Ult", "Special", 0.45f); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_R_Cast, ((EntityState)this).gameObject); behaviour.canExecutePrimary = false; CameraZoomOut(); } public override void Update() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)indicatorChild)) { Quaternion val = Quaternion.LookRotation(((EntityState)this).inputBank.aimDirection, Vector3.up); Vector3 eulerAngles = ((Quaternion)(ref val)).eulerAngles; indicatorChild.localRotation = Quaternion.Euler(0f, eulerAngles.y, 0f); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); UpdateDirection(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= duration / (float)waveCount && firedCount < waveCount) { stopwatch = 0f; Fire(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } protected virtual void UpdateDirection() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); direction = ((Ray)(ref aimRay)).direction; Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.aimDirection); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = new Vector3(val.x, 0f, val.y); Vector3 normalized = ((Vector3)(ref val2)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = normalized; } } } private void Fire() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) firedCount++; ((EntityState)this).PlayAnimation("Ult, Override", "UltFire", "Special", 0.4f); EffectManager.SimpleMuzzleFlash(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Muzzleflash1.prefab").WaitForCompletion(), ((EntityState)this).gameObject, "bookMuzzle", false); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_R_MisCast, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * damageCoefficient; val.damageTypeOverride = damageType; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; Ray aimRay = ((BaseState)this).GetAimRay(); val.position = ((Ray)(ref aimRay)).origin + direction * 8f; val.procChainMask = default(ProcChainMask); val.projectilePrefab = projectilePrefab; val.rotation = Util.QuaternionSafeLookRotation(direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } public override void OnExit() { ((EntityState)this).OnExit(); CameraZoomIn(); behaviour.canExecutePrimary = true; if (Object.op_Implicit((Object)(object)indicator)) { EntityState.Destroy((Object)(object)indicator); } ((EntityState)this).GetModelAnimator().SetTrigger("ultOver"); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class SpecialAlt : Special { protected override void UpdateDirection() { } public override void OnEnter() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) waveCount = 5; damageType = (DamageType)8; damageCoefficient = 2.8f; base.OnEnter(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class Utility : YuumiState { public override void OnEnter() { base.OnEnter(); if (((!Object.op_Implicit((Object)(object)behaviour.target) && !behaviour.isAttached) || !((EntityState)this).characterBody.isPlayerControlled) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityDash()); } else if (Object.op_Implicit((Object)(object)attachedBody)) { if (!Object.op_Implicit((Object)(object)behaviour.target)) { AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Detach, ((EntityState)this).gameObject); behaviour.Detach(); if (((EntityState)this).isAuthority) { ((EntityState)this).GetComponent<EntityStateMachine>().SetNextStateToMain(); ((EntityState)this).outer.SetNextState((EntityState)(object)new UtilityEnd()); } } else if ((Object)(object)behaviour.target.healthComponent.body != (Object)(object)attachedBody) { EntityStateMachine component = ((EntityState)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)component) && component.state is AttachState attachState) { attachState.setPos = false; } behaviour.Detach(behaviour.target.healthComponent.body); Attach(); } } else { Attach(); } } private void Attach() { behaviour.Attach(); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DashTowardsBody()); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class UtilityDash : YuumiState { private Vector3 direction; public float duration = 0.25f; private AnimationCurve curve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); private float speed = 12f; public override void OnEnter() { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Attach", "Utility", duration); CharacterBody component = ((EntityState)this).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.currentVehicle) && NetworkServer.active) { component.currentVehicle.EjectPassenger(); } if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); } AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attach_Cast, ((EntityState)this).gameObject); Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); direction = ((Vector3)(ref val)).normalized; EffectManager.SimpleMuzzleFlash(Prefabs.DashTrailEffectQuick, ((EntityState)this).gameObject, "neck", false); } public override void FixedUpdate() { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = true; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { float num = curve.Evaluate(((EntityState)this).fixedAge / duration) * speed; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += direction * (((BaseState)this).moveSpeedStat * num * Time.fixedDeltaTime); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).GetModelAnimator().SetTrigger("dashSkip"); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class DashTowardsBody : YuumiState { private Transform position; private float speed = 15f; private bool isAttached; private EntityStateMachine stateMachine; private AttachState state; public override void OnEnter() { base.OnEnter(); stateMachine = ((EntityState)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)stateMachine) && (state = stateMachine.state as AttachState) != null) { isAttached = true; state.setPos = false; } EffectManager.SimpleMuzzleFlash(Prefabs.DashTrailEffect, ((EntityState)this).gameObject, "neck", false); ((EntityState)this).skillLocator.utility.RunRecharge(4.5f); AkSoundEngine.PostEvent(Sounds.Play_Yuumi_Attach_Cast, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("FullBody, Override", "Attach", "Utility", 0.4f); position = behaviour.attachmentPosition; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(); ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 100f); CameraZoomOut(); } private Vector3 direction() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) Vector3 val = position.position - ((EntityState)this).transform.position; return ((Vector3)(ref val)).normalized; } public override void FixedUpdate() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)position)) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Vector3.Distance(((EntityState)this).transform.position, position.position) > 5f) { Vector3 val = direction(); ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += val * ((BaseState)this).moveSpeedStat * speed * Time.fixedDeltaTime; Vector2 val2 = Util.Vector3XZToVector2XY(val); if (val2 != Vector2.zero) { ((Vector2)(ref val2)).Normalize(); Vector3 val3 = new Vector3(val2.x, 0f, val2.y); Vector3 normalized = ((Vector3)(ref val3)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = normalized; } } return; } if (isAttached && state != null) { state.setPos = true; } if (((EntityState)this).isAuthority) { if (!isAttached) { stateMachine.SetNextState((EntityState)(object)new AttachState()); } ((EntityState)this).outer.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 references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknow