Decompiled source of Dancer v0.10.0
Dancer.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using Dancer.Modules; using Dancer.Modules.Components; using Dancer.Modules.Survivors; using Dancer.SkillStates; using Dancer.SkillStates.DirectionalM1; using Dancer.SkillStates.InterruptStates; using Dancer.SkillStates.M1; using Dancer.SoftDependencies; using EmotesAPI; using EntityStates; using EntityStates.LockedMage; using EntityStates.Merc; using HG; using HG.BlendableTypes; using KinematicCharacterController; using MonoMod.RuntimeDetour; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] internal class BodyInfo { internal string bodyName = ""; internal string bodyNameToken = ""; internal string subtitleNameToken = ""; internal Texture characterPortrait = null; internal GameObject crosshair = null; internal GameObject podPrefab = null; internal float maxHealth = 100f; internal float healthGrowth = 2f; internal float healthRegen = 0f; internal float shield = 0f; internal float shieldGrowth = 0f; internal float moveSpeed = 7f; internal float moveSpeedGrowth = 0f; internal float acceleration = 80f; internal float jumpPower = 15f; internal float jumpPowerGrowth = 0f; internal float damage = 12f; internal float attackSpeed = 1f; internal float attackSpeedGrowth = 0f; internal float armor = 0f; internal float armorGrowth = 0f; internal float crit = 1f; internal float critGrowth = 0f; internal int jumpCount = 1; internal Color bodyColor = Color.grey; } internal class CustomRendererInfo { internal string childName; internal Material material; internal bool ignoreOverlays; } public class DancerComponent : MonoBehaviour { private Animator animator; private ModelLocator modelLocator; private Transform modelTransform; public Transform weaponBase; public Transform root; private Vector3 weaponPointOverride; private Vector3 bodyDirectionOverride; public Vector3 vector = new Vector3(90f, 0f, 0f); private void Start() { modelLocator = ((Component)this).GetComponent<ModelLocator>(); modelTransform = modelLocator.modelTransform; GetTransforms(); } private void GetTransforms() { if (Object.op_Implicit((Object)(object)modelTransform)) { weaponBase = modelTransform.Find("DancerArmature/ROOT/HipsControl/Hips/Spine/Chest/Shoulder.L/UpperArm.L/LowerArm.L/Hand.L/Lance"); root = modelTransform.Find("DancerArmature/ROOT"); } } public void BodyRotationOverride(Vector3 direction) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) bodyDirectionOverride = direction; } public void StopBodyOverride() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) bodyDirectionOverride = Vector3.zero; } public void WeaponRotationOverride(Vector3 pointToHit) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) weaponPointOverride = pointToHit; } public void StopWeaponOverride() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) weaponPointOverride = Vector3.zero; } private void LateUpdate() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0017: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //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_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_008a: Unknown result type (might be due to invalid IL or missing references) if (weaponPointOverride != Vector3.zero) { Vector3 val = weaponPointOverride - weaponBase.position; Quaternion rotation = Util.QuaternionSafeLookRotation(val) * Quaternion.Euler(vector); weaponBase.rotation = rotation; } if (bodyDirectionOverride != Vector3.zero) { Quaternion rotation2 = Util.QuaternionSafeLookRotation(bodyDirectionOverride) * Quaternion.Euler(vector); root.rotation = rotation2; } } } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public Sprite skillIcon; public SerializableEntityStateType activationState; public string activationStateMachineName; public int baseMaxStock; public float baseRechargeInterval; public bool beginSkillCooldownOnSkillEnd; public bool canceledFromSprinting; public bool forceSprintDuringState; public bool fullRestockOnAssign; public InterruptPriority interruptPriority; public bool resetCooldownTimerOnUse; public bool isCombatSkill; public bool mustKeyPress; public bool cancelSprintingOnActivation; public int rechargeStock; public int requiredStock; public int stockToConsume; public string[] keywordTokens; } namespace Dancer { [BepInPlugin("com.nayDPz.Dancer", "Dancer", "0.10.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class DancerPlugin : BaseUnityPlugin { public const string MODUID = "com.nayDPz.Dancer"; public const string MODNAME = "Dancer"; public const string MODVERSION = "0.10.0"; public const string developerPrefix = "nayDPz"; public static bool emotesInstalled; public static DancerPlugin instance; private void Awake() { instance = this; Assets.PopulateAssets(); Config.ReadConfig(); SoundBanks.Init(); States.RegisterStates(); Buffs.RegisterBuffs(); Projectiles.RegisterProjectiles(); Tokens.AddTokens(); ItemDisplays.PopulateDisplays(); CameraParams.InitializeParams(); Dancer.Modules.Survivors.Dancer.CreateCharacter(); if (Config.artiBuddy.Value) { new LockedMageTracker(); } new ContentPacks().Initialize(); if (CustomEmotesAPICompat.enabled) { CustomEmotesAPICompat.SetupSkeleton(); } ContentManager.onContentPacksAssigned += LateSetup; Hook(); } private void LateSetup(ReadOnlyArray<ReadOnlyContentPack> obj) { //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) Dancer.Modules.Survivors.Dancer.SetItemDisplays(); if (Config.artiBuddy.Value) { ((Behaviour)Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/LockedMage.prefab").WaitForCompletion().GetComponent<GameObjectUnlockableFilter>()).enabled = false; } } private void Hook() { //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 HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats); } private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (self.HasBuff(Buffs.ribbonDebuff)) { self.moveSpeed *= 0.75f; } } private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0070: 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_007f: Invalid comparison between Unknown and I4 //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Invalid comparison between Unknown and I4 //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Invalid comparison between Unknown and I4 //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Invalid comparison between Unknown and I4 //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) RibbonController ribbonController = RibbonController.FindRibbonController(((Component)self).gameObject); if (damageInfo != null && Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)damageInfo.attacker.GetComponent<CharacterBody>())) { if (damageInfo.attacker.GetComponent<CharacterBody>().baseNameToken == "NDP_DANCER_BODY_NAME") { if (Object.op_Implicit((Object)(object)ribbonController) && damageInfo.procChainMask.mask == 0 && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) != 67108864 && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) != 8388608) { HealthComponent component = damageInfo.attacker.GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component) && damageInfo.damage > 0f) { float num = component.fullHealth * 0.045f * damageInfo.procCoefficient; component.AddBarrier(num); } bool crit = damageInfo.crit; float damageValue = 0f * damageInfo.attacker.GetComponent<CharacterBody>().baseDamage; TeamIndex teamIndex = damageInfo.attacker.GetComponent<CharacterBody>().teamComponent.teamIndex; if (Object.op_Implicit((Object)(object)ribbonController.NetworknextRoot)) { CharacterBody component2 = ribbonController.nextRoot.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component2)) { DancerOrb dancerOrb = new DancerOrb(); dancerOrb.attacker = damageInfo.attacker; dancerOrb.bouncedObjects = null; dancerOrb.bouncesRemaining = 0; dancerOrb.damageCoefficientPerBounce = 1f; dancerOrb.damageColorIndex = (DamageColorIndex)3; dancerOrb.damageValue = damageValue; dancerOrb.isCrit = crit; ((Orb)dancerOrb).origin = damageInfo.position; dancerOrb.procChainMask = default(ProcChainMask); dancerOrb.procCoefficient = 0f; dancerOrb.range = 0f; dancerOrb.teamIndex = teamIndex; ((Orb)dancerOrb).target = component2.mainHurtBox; ((Orb)dancerOrb).duration = 0.25f; OrbManager.instance.AddOrb((Orb)(object)dancerOrb); } } else { if (RibbonController.naturalSpread) { ribbonController.SpeedUpRibbon(0.25f); } else { ribbonController.SearchNewTarget(); } ribbonController.inflictorRoot = damageInfo.attacker; } } if ((int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 536870912) { damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)0); float ribbonDebuffDuration = Buffs.ribbonDebuffDuration; if (Object.op_Implicit((Object)(object)ribbonController)) { ribbonController.SyncRibbonTimersToNewTime(ribbonDebuffDuration); } else { GameObject val = Object.Instantiate<GameObject>(Assets.ribbonController, ((Component)self).gameObject.transform); RibbonController component3 = val.GetComponent<RibbonController>(); component3.timer = ribbonDebuffDuration; component3.NetworkownerRoot = ((Component)self).gameObject; component3.inflictorRoot = damageInfo.attacker; component3.spreadsRemaining = 2; NetworkServer.Spawn(val); component3.StartRibbon(); } } if ((int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 8388608) { damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)32); } } if (self.body.baseNameToken == "NDP_DANCER_BODY_NAME" && self.body.HasBuff(Buffs.parryBuff)) { damageInfo.rejected = true; self.body.RemoveBuff(Buffs.parryBuff); self.body.AddTimedBuff(Buffs.HiddenInvincibility, 1.5f); } } orig.Invoke(self, damageInfo); if (Object.op_Implicit((Object)(object)ribbonController) && !self.alive && !ribbonController.ribbonAttached) { ribbonController.DetachFromOwner(); } } } public static class SoundBanks { public static string soundBankDirectory => Path.GetDirectoryName(((BaseUnityPlugin)DancerPlugin.instance).Info.Location); public static void Init() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown Hook val = new Hook((MethodBase)Reflection.GetMethodCached(typeof(AkSoundEngineInitialization), "InitializeSoundEngine"), Reflection.GetMethodCached(typeof(SoundBanks), "AddBanks")); } private static bool AddBanks(Func<AkSoundEngineInitialization, bool> orig, AkSoundEngineInitialization self) { bool result = orig(self); LoadBanks(); return result; } private static void LoadBanks() { //IL_0006: 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_0020: Unknown result type (might be due to invalid IL or missing references) AkSoundEngine.AddBasePath(soundBankDirectory); uint num = default(uint); AkSoundEngine.LoadBank("DancerBank", ref num); uint num2 = default(uint); AkSoundEngine.LoadBank("RidleyBank", ref num2); } } } namespace Dancer.SoftDependencies { public static class CustomEmotesAPICompat { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static AnimationChanged <>9__3_0; internal void <SetupSkeleton>b__3_0(string newAnimation, BoneMapper mapper) { if (!Object.op_Implicit((Object)(object)mapper) || !((Object)((Component)mapper).transform.parent).name.Contains("Dancer")) { return; } Transform val = ((Component)((Component)mapper).transform.parent).GetComponent<ChildLocator>().FindChild("Lance"); if (Object.op_Implicit((Object)(object)val)) { if (newAnimation != "none") { ((Component)val).gameObject.SetActive(false); } else { ((Component)val).gameObject.SetActive(true); } } } } private static bool? _enabled; public static bool enabled { get { if (!_enabled.HasValue) { _enabled = Chainloader.PluginInfos.ContainsKey("com.weliveinasociety.CustomEmotesAPI"); } return _enabled.Value; } } public static void SetupSkeleton() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //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_0020: Expected O, but got Unknown object obj = <>c.<>9__3_0; if (obj == null) { AnimationChanged val = delegate(string newAnimation, BoneMapper mapper) { if (Object.op_Implicit((Object)(object)mapper) && ((Object)((Component)mapper).transform.parent).name.Contains("Dancer")) { Transform val2 = ((Component)((Component)mapper).transform.parent).GetComponent<ChildLocator>().FindChild("Lance"); if (Object.op_Implicit((Object)(object)val2)) { if (newAnimation != "none") { ((Component)val2).gameObject.SetActive(false); } else { ((Component)val2).gameObject.SetActive(true); } } } }; <>c.<>9__3_0 = val; obj = (object)val; } CustomEmotesAPI.animChanged += (AnimationChanged)obj; SurvivorCatalog.Init += new hook_Init(SurvivorCatalog_Init); } private static void SurvivorCatalog_Init(orig_Init orig) { orig.Invoke(); foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { if (((Object)allSurvivorDef.bodyPrefab).name == "DancerBody") { GameObject val = Assets.mainAssetBundle.LoadAsset<GameObject>("DancerHumanoid"); CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, val, 0, true); } } } } } namespace Dancer.SkillStates { public class ChargeParry : BaseSkillState { private float duration; private Animator animator; private ChildLocator childLocator; private protected GameObject chargeEffectInstance; public GameObject chargeEffectPrefab; public string chargeSoundString; public float baseDuration = 1f; public GameObject crosshairOverridePrefab; public float minChargeDuration = 1f; private GameObject defaultCrosshairPrefab; private float timer; private float perfectTime = 0.25f; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; timer = duration; animator = ((EntityState)this).GetModelAnimator(); childLocator = ((EntityState)this).GetModelChildLocator(); PlayChargeAnimation(); Util.PlayAttackSpeedSound("FireballCharge", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.parryBuff); } if (Object.op_Implicit((Object)(object)crosshairOverridePrefab)) { } ((BaseState)this).StartAimMode(duration + 2f, false); } public override void OnExit() { if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.parryBuff); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { } ((EntityState)this).OnExit(); } protected float CalcCharge() { if (((EntityState)this).fixedAge <= perfectTime) { return 1f; } return Mathf.Clamp01(timer / duration); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); timer -= Time.fixedDeltaTime; float charge = CalcCharge(); if (Util.HasEffectiveAuthority(((EntityState)this).gameObject) && ((!((BaseSkillState)this).IsKeyDownAuthority() && ((EntityState)this).fixedAge >= minChargeDuration) || !((EntityState)this).characterBody.HasBuff(Buffs.parryBuff))) { Riposte riposte = new Riposte(); riposte.charge = charge; ((EntityState)this).outer.SetNextState((EntityState)(object)riposte); } } 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; } protected virtual void PlayChargeAnimation() { ((EntityState)this).PlayAnimation("Head, Override", "NSpecStart", "Slash.playbackRate", 0.225f, 0f); } } public class DragonLunge : BaseSkillState { public static float popRadius = 4f; public static float cooldownOnMiss = 1f; public static float smallHopStrength = 12f; public static float antiGravityStrength = 30f; public static float pullForce = 3f; public static float radius = 1.75f; public static float damageCoefficient = 5.5f; public static float procCoefficient = 1f; public static float baseDuration = 0.85f; public static float force = 0f; public static float recoil = 1f; public static float range = 70f; private DancerComponent weaponAnimator; private float earlyExitTime = 0.35f; private bool hitWorld; private float stopwatch; private Vector3 hitPoint; private float duration; private float fireTime; private bool hasFired; private Animator animator; private string muzzleString; private static float antigravityStrength; public override void OnEnter() { //IL_014d: 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_0109: 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_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); weaponAnimator = ((EntityState)this).GetComponent<DancerComponent>(); ((BaseState)this).StartAimMode(2f, false); duration = baseDuration / ((BaseState)this).attackSpeedStat; fireTime = 0.45f * duration; ((EntityState)this).characterBody.SetAimTimer(2f); animator = ((EntityState)this).GetModelAnimator(); muzzleString = "LanceBase"; Util.PlaySound("LungeStart", ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("FullBody, Override", "DragonLunge", "DragonLunge.playbackRate", duration * 0.975f, 0f); earlyExitTime /= ((BaseState)this).attackSpeedStat; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && smallHopStrength != 0f) { Vector3 moveVector = ((EntityState)this).inputBank.moveVector; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)this).characterMotor.velocity = new Vector3(smallHopStrength * moveVector.x, Mathf.Max(((EntityState)this).characterMotor.velocity.y, smallHopStrength), smallHopStrength * moveVector.z); } ((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection; } public override void OnExit() { weaponAnimator.StopWeaponOverride(); animator.SetFloat("DragonLunge.playbackRate", 1f); ((EntityState)this).OnExit(); } private void Fire() { //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: 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_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Expected O, but got Unknown //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_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_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0383: 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_038d: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_03d1: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) if (hasFired) { return; } hasFired = true; bool flag = ((BaseSkillState)this).IsKeyDownAuthority(); Transform val = ((EntityState)this).characterBody.coreTransform; ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); if (Object.op_Implicit((Object)(object)modelChildLocator)) { val = modelChildLocator.FindChild(muzzleString); } ((EntityState)this).characterBody.AddSpreadBloom(1.5f); Util.PlaySound("LungeFire", ((EntityState)this).gameObject); if (!((EntityState)this).isAuthority) { return; } EffectManager.SimpleEffect(Assets.dragonLungeEffect, val.position, val.rotation, true); Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).AddRecoil(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); bool hitEnemy = false; List<GameObject> hitBodies = new List<GameObject>(); RaycastHit val2 = default(RaycastHit); if (Util.CharacterSpherecast(((EntityState)this).gameObject, aimRay, 1.5f, ref val2, range, ((LayerIndex)(ref LayerIndex.world)).mask, (QueryTriggerInteraction)0)) { hitWorld = true; hitPoint = ((RaycastHit)(ref val2)).point; } BulletAttack val3 = new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * ((BaseState)this).damageStat, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)32), falloffModel = (FalloffModel)0, maxDistance = range, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = 0f, isCrit = ((BaseState)this).RollCrit(), owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = false, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = radius, sniper = false, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, weapon = null, tracerEffectPrefab = null, spreadPitchScale = 0f, spreadYawScale = 0f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = Assets.stabHitEffect }; val3.hitCallback = (HitCallback)delegate(BulletAttack bullet, ref BulletHit hitInfo) { //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) //IL_0051: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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) bool result = BulletAttack.defaultHitCallback.Invoke(bullet, ref hitInfo); if (!hitWorld) { hitPoint = hitInfo.point; } Vector3 val5 = ((EntityState)this).transform.position - hitPoint; float magnitude = ((Vector3)(ref val5)).magnitude; val5 = hitPoint - ((EntityState)this).transform.position; Vector3 normalized = ((Vector3)(ref val5)).normalized; float num = Mathf.Lerp(Pull.minDuration, Pull.maxDuration, magnitude / Pull.maxDistance); if (Object.op_Implicit((Object)(object)hitInfo.hitHurtBox)) { HurtBox hitHurtBox = hitInfo.hitHurtBox; if (Object.op_Implicit((Object)(object)hitHurtBox)) { HealthComponent healthComponent = hitHurtBox.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && Object.op_Implicit((Object)(object)healthComponent.body)) { hitEnemy = true; hitBodies.Add(((Component)healthComponent.body).gameObject); } } } return result; }; val3.Fire(); if (hitWorld || hitEnemy) { if (((BaseSkillState)this).IsKeyDownAuthority()) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Pull { waitTime = duration - fireTime, point = hitPoint, hitWorld = hitWorld, hitBodies = hitBodies }); } OnHitAnyAuthority(); } if (hitWorld && !hitEnemy && !((BaseSkillState)this).IsKeyDownAuthority()) { GenericSkill activatorSkillSlot = ((BaseSkillState)this).activatorSkillSlot; activatorSkillSlot.rechargeStopwatch += ((BaseSkillState)this).activatorSkillSlot.CalculateFinalRechargeInterval() - cooldownOnMiss; } else if (!hitWorld && !hitEnemy) { GenericSkill activatorSkillSlot2 = ((BaseSkillState)this).activatorSkillSlot; activatorSkillSlot2.rechargeStopwatch += ((BaseSkillState)this).activatorSkillSlot.CalculateFinalRechargeInterval() - cooldownOnMiss; } Vector3 val4 = hitPoint - ((EntityState)this).transform.position; if (hitPoint != Vector3.zero && ((Vector3)(ref val4)).magnitude > 5f) { weaponAnimator.WeaponRotationOverride(val4 * 500f + ((EntityState)this).transform.position); } else { weaponAnimator.WeaponRotationOverride(((Ray)(ref aimRay)).GetPoint(range)); } } private void FireLollipop(Vector3 position) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) bool flag = false; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, popRadius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)0); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { flag = true; ((EntityState)this).outer.SetNextState((EntityState)(object)new Pull2 { waitTime = duration - fireTime, point = ((Component)array[i]).transform.position, hitWorld = true, hitBodies = new List<GameObject>() }); Debug.Log((object)"popped dlunge"); OnHitAnyAuthority(); break; } } } private void OnHitAnyAuthority() { Util.PlaySound("LungeHit", ((EntityState)this).gameObject); } public override void FixedUpdate() { //IL_0039: 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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (((EntityState)this).fixedAge < fireTime) { ((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity.y = characterMotor.velocity.y + antigravityStrength * Time.fixedDeltaTime * (1f - stopwatch / fireTime); } if (((EntityState)this).fixedAge >= fireTime * 0.85f && !hasFired) { DancerComponent dancerComponent = weaponAnimator; Ray aimRay = ((BaseState)this).GetAimRay(); dancerComponent.WeaponRotationOverride(((Ray)(ref aimRay)).GetPoint(range)); } if (((EntityState)this).fixedAge >= fireTime) { Fire(); ((EntityState)this).characterDirection.forward = ((hitPoint != Vector3.zero) ? (hitPoint - ((EntityState)this).transform.position) : ((EntityState)this).characterDirection.forward); } if (((EntityState)this).fixedAge >= duration - earlyExitTime && hasFired && ((EntityState)this).isAuthority) { weaponAnimator.StopWeaponOverride(); ((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; } } public class DragonLungeButEpic : BaseSkillState { public static float smallHopStrength = 12f; public static float antiGravityStrength = 30f; public static float pullForce = 3f; public static float damageCoefficient = 3.75f; public static float procCoefficient = 1f; public static float baseDuration = 0.8f; public static float force = 0f; public static float recoil = 1f; public static float range = 62f; private DancerComponent weaponAnimator; private CharacterBody hitTarget; private bool hitEnemy; private bool hitWorld; private float stopwatch; private Vector3 hitPoint; private float duration; private float fireTime; private bool hasFired; private bool hasHit; private float hitTime; private Animator animator; private string muzzleString; private static float antigravityStrength; private GameObject netTargetObject; public override void OnEnter() { //IL_00da: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); weaponAnimator = ((EntityState)this).GetComponent<DancerComponent>(); ((BaseState)this).StartAimMode(2f, false); duration = baseDuration / ((BaseState)this).attackSpeedStat; fireTime = 0.4f * duration; ((EntityState)this).characterBody.SetAimTimer(2f); animator = ((EntityState)this).GetModelAnimator(); muzzleString = "LanceBase"; ((EntityState)this).PlayAnimation("FullBody, Override", "DragonLunge", "DragonLunge.playbackRate", duration * 0.975f, 0f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && smallHopStrength != 0f) { ((EntityState)this).characterMotor.velocity.y = smallHopStrength; } ((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection; } public override void OnExit() { weaponAnimator.StopWeaponOverride(); animator.SetFloat("DragonLunge.playbackRate", 1f); ((EntityState)this).OnExit(); } private void Fire() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: 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_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0194: 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_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Expected O, but got Unknown //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) if (hasFired) { return; } hasFired = true; ((EntityState)this).characterBody.AddSpreadBloom(1.5f); EffectManager.SimpleMuzzleFlash(Assets.dragonLungeEffect, ((EntityState)this).gameObject, muzzleString, false); if (!((EntityState)this).isAuthority) { return; } Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).AddRecoil(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); BulletAttack val = new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * ((BaseState)this).damageStat, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)32), falloffModel = (FalloffModel)1, maxDistance = range, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = 0f, isCrit = ((BaseState)this).RollCrit(), owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = false, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = 2f, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = null, spreadPitchScale = 0f, spreadYawScale = 0f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = null }; val.hitCallback = (HitCallback)delegate(BulletAttack bullet, ref BulletHit hitInfo) { bool result = BulletAttack.defaultHitCallback.Invoke(bullet, ref hitInfo); if (Object.op_Implicit((Object)(object)hitInfo.hitHurtBox)) { HurtBox hitHurtBox = hitInfo.hitHurtBox; if (Object.op_Implicit((Object)(object)hitHurtBox)) { HealthComponent healthComponent = hitHurtBox.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && Object.op_Implicit((Object)(object)healthComponent.body)) { hitTarget = healthComponent.body; hitEnemy = true; netTargetObject = ((Component)hitTarget).gameObject; } } } return result; }; val.Fire(); if (hitWorld || hitEnemy) { OnHitAnyAuthority(); } else { Util.PlaySound("DSpecialSwing", ((EntityState)this).gameObject); } Vector3 val2 = hitPoint - ((EntityState)this).transform.position; if (hitEnemy && hitTarget.coreTransform.position != Vector3.zero) { val2 = hitTarget.coreTransform.position - ((EntityState)this).transform.position; weaponAnimator.WeaponRotationOverride(val2 * 500f + ((EntityState)this).transform.position); } else if (hitPoint != Vector3.zero && ((Vector3)(ref val2)).magnitude > 0f) { weaponAnimator.WeaponRotationOverride(val2 * 500f + ((EntityState)this).transform.position); } else { weaponAnimator.WeaponRotationOverride(((Ray)(ref aimRay)).GetPoint(range)); } } private void OnHitAnyAuthority() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound("DSpecialHit", ((EntityState)this).gameObject); ((EntityState)this).characterMotor.velocity = Vector3.zero; hasHit = true; } public override void FixedUpdate() { //IL_0039: 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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (((EntityState)this).fixedAge < fireTime) { ((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity.y = characterMotor.velocity.y + antigravityStrength * Time.fixedDeltaTime * (1f - stopwatch / fireTime); } if (((EntityState)this).fixedAge >= fireTime * 0.85f && !hasFired) { DancerComponent dancerComponent = weaponAnimator; Ray aimRay = ((BaseState)this).GetAimRay(); dancerComponent.WeaponRotationOverride(((Ray)(ref aimRay)).GetPoint(range)); } if (((EntityState)this).fixedAge >= fireTime) { Fire(); ((EntityState)this).characterDirection.forward = ((hitPoint != Vector3.zero) ? (hitPoint - ((EntityState)this).transform.position) : ((EntityState)this).characterDirection.forward); } if (hasHit) { ((EntityState)this).characterMotor.velocity = Vector3.zero; animator.SetFloat("DragonLunge.playbackRate", 0f); } if (!(((EntityState)this).fixedAge >= duration) || !((EntityState)this).isAuthority) { return; } if (hasHit) { Util.PlaySound("DSpecialPull", ((EntityState)this).gameObject); if (!hitEnemy || !Object.op_Implicit((Object)(object)hitTarget)) { if (hitWorld) { Vector3 val = hitPoint - ((EntityState)this).transform.position; float num = Mathf.Max(((Vector3)(ref val)).magnitude - 2f, 0f); val = hitPoint - ((EntityState)this).transform.position; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 point = num * normalized + ((EntityState)this).transform.position; ((EntityState)this).outer.SetNextState((EntityState)(object)new Pull { point = point, hitWorld = hitWorld }); } else { ((EntityState)this).outer.SetNextStateToMain(); } } } else { weaponAnimator.StopWeaponOverride(); ((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; } } public class FireChainRibbons : BaseSkillState { public static float damageCoefficient = 0.75f; public static float procCoefficient = 0.5f; public static float baseDuration = 0.35f; public static float force = 0f; public static float recoil = 1f; public static float range = 62f; private float duration; private float fireTime; private bool hasFired; private Animator animator; private string muzzleString; public override void OnEnter() { ((BaseState)this).OnEnter(); ((BaseState)this).StartAimMode(2f, false); duration = DragonLunge.baseDuration / ((BaseState)this).attackSpeedStat; fireTime = 0.25f * duration; ((EntityState)this).characterBody.SetAimTimer(2f); animator = ((EntityState)this).GetModelAnimator(); muzzleString = "LanceBase"; Util.PlaySound("Play_item_proc_whip", ((EntityState)this).gameObject); } public override void OnExit() { if (!hasFired) { Fire(); } ((EntityState)this).OnExit(); } private void Fire() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0057: 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_005b: Unknown result type (might be due to invalid IL or missing references) if (!hasFired) { hasFired = true; ((EntityState)this).characterBody.AddSpreadBloom(1.5f); if (((EntityState)this).isAuthority) { GameObject dancerRibbonProjectile = Projectiles.dancerRibbonProjectile; Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 origin = ((Ray)(ref aimRay)).origin; Vector3 direction = ((Ray)(ref aimRay)).direction; ProjectileManager.instance.FireProjectile(dancerRibbonProjectile, origin, Util.QuaternionSafeLookRotation(direction), ((EntityState)this).gameObject, damageCoefficient * ((BaseState)this).damageStat, 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f); } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= fireTime) { Fire(); } 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; } } public class Pull : BaseSkillState { public List<GameObject> hitBodies; public float waitTime; public Vector3 point; private Vector3 direction; private bool pullStarted; private float distance; private float duration; private float speed; private float startSpeed; private float endSpeed; public bool hitWorld; private float exitHopVelocity = 15f; public static float minDuration = 0.2f; public static float maxDuration = 0.8f; public static float maxDistance = 80f; public static float minVelocity = 0.7f; public static float velocityMultiplier = 1.3f; private float maxAngle = 60f; private Animator animator; private float stopwatch; private DancerComponent weaponAnimator; public float a = 0.15f; private bool jump = false; public override void OnEnter() { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); } animator = ((EntityState)this).GetModelAnimator(); weaponAnimator = ((EntityState)this).GetComponent<DancerComponent>(); Vector3 val = point - ((EntityState)this).transform.position; float num = Mathf.Max(((Vector3)(ref val)).magnitude - 3f, 0f); val = point - ((EntityState)this).transform.position; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2 = num * normalized + ((EntityState)this).transform.position; val = ((EntityState)this).transform.position - val2; distance = ((Vector3)(ref val)).magnitude; val = val2 - ((EntityState)this).transform.position; direction = ((Vector3)(ref val)).normalized; duration = Mathf.Lerp(minDuration, maxDuration, distance / maxDistance); speed = distance / duration; startSpeed = speed * 2f; endSpeed = speed * 0f; foreach (GameObject hitBody in hitBodies) { if (!Object.op_Implicit((Object)(object)hitBody) || !Object.op_Implicit((Object)(object)hitBody.GetComponent<NetworkIdentity>())) { continue; } EntityStateMachine component = hitBody.GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)hitBody.GetComponent<SetStateOnHurt>()) && hitBody.GetComponent<SetStateOnHurt>().canBeFrozen) { if (!hitWorld) { SuspendedState suspendedState = new SuspendedState { duration = duration }; component.SetInterruptState((EntityState)(object)suspendedState, (InterruptPriority)6); } else { SkeweredState skeweredState = new SkeweredState { skewerDuration = waitTime, pullDuration = duration, destination = point }; component.SetInterruptState((EntityState)(object)skeweredState, (InterruptPriority)6); } } } if (Object.op_Implicit((Object)(object)((EntityState)this).GetComponent<KinematicCharacterMotor>())) { ((EntityState)this).GetComponent<KinematicCharacterMotor>().ForceUnground(0.1f); } weaponAnimator.WeaponRotationOverride(((Vector3)(ref normalized)).normalized * 500f + ((EntityState)this).transform.position); ((EntityState)this).PlayAnimation("FullBody, Override", "DragonLungePull", "DragonLunge.playbackRate", duration * a, 0f); } public override void OnExit() { //IL_0048: 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_0050: Unknown result type (might be due to invalid IL or missing references) if (!jump) { ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); } animator.SetFloat("DragonLunge.playbackRate", 1f); if (NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } weaponAnimator.StopWeaponOverride(); ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((ButtonState)(ref ((EntityState)this).inputBank.jump)).justPressed) { jump = true; ((EntityState)this).PlayAnimation("FullBody, Override", "Jump"); ((EntityState)this).characterMotor.velocity = Vector3.zero; ((BaseState)this).SmallHop(((EntityState)this).characterMotor, ((EntityState)this).characterBody.jumpPower); ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).fixedAge >= waitTime) { if (!pullStarted) { animator.SetFloat("DragonLunge.playbackRate", 1f); pullStarted = true; Util.PlaySound("LungeDash", ((EntityState)this).gameObject); } stopwatch += Time.fixedDeltaTime; speed = Mathf.Lerp(startSpeed, endSpeed, stopwatch / duration); ((EntityState)this).characterDirection.forward = direction; ((EntityState)this).characterMotor.velocity = direction * speed; if (stopwatch >= duration) { animator.SetFloat("DragonLunge.playbackRate", 0f); ((EntityState)this).characterMotor.velocity = Vector3.zero; if (!hitWorld) { ((EntityState)this).outer.SetNextStateToMain(); } else if (!((EntityState)this).inputBank.skill3.down) { ((EntityState)this).outer.SetNextStateToMain(); } return; } } else { ((EntityState)this).characterMotor.velocity = Vector3.zero; animator.SetFloat("DragonLunge.playbackRate", 0f); } bool flag = false; } 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; } public override void OnSerialize(NetworkWriter writer) { //IL_0083: 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) ((BaseSkillState)this).OnSerialize(writer); int num = 0; foreach (GameObject hitBody in hitBodies) { if (Object.op_Implicit((Object)(object)hitBody) && Object.op_Implicit((Object)(object)hitBody.GetComponent<NetworkIdentity>())) { num++; } } writer.Write(num); writer.Write((double)waitTime); writer.Write(hitWorld); writer.Write(point); foreach (GameObject hitBody2 in hitBodies) { if (Object.op_Implicit((Object)(object)hitBody2) && Object.op_Implicit((Object)(object)hitBody2.GetComponent<NetworkIdentity>())) { writer.Write(hitBody2.GetComponent<NetworkIdentity>().netId); } } } public override void OnDeserialize(NetworkReader reader) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) hitBodies = new List<GameObject>(); ((BaseSkillState)this).OnDeserialize(reader); int num = reader.ReadInt32(); waitTime = (float)reader.ReadDouble(); hitWorld = reader.ReadBoolean(); point = reader.ReadVector3(); for (int i = 0; i < num; i++) { hitBodies.Add(NetworkServer.FindLocalObject(reader.ReadNetworkId())); } } } public class Pull2 : BaseSkillState { public List<GameObject> hitBodies; public float waitTime; public Vector3 point; private Vector3 direction; private bool pullStarted; private float distance; private float duration; private float speed; private float startSpeed; private float endSpeed; public bool hitWorld; private float exitHopVelocity = 15f; public static float minDuration = 0.2f; public static float maxDuration = 0.8f; public static float maxDistance = 80f; public static float minVelocity = 0.7f; public static float velocityMultiplier = 1.3f; private float maxAngle = 60f; private Animator animator; private float stopwatch; private DancerComponent weaponAnimator; public override void OnEnter() { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); } animator = ((EntityState)this).GetModelAnimator(); weaponAnimator = ((EntityState)this).GetComponent<DancerComponent>(); Vector3 val = point - ((EntityState)this).transform.position; float num = Mathf.Max(((Vector3)(ref val)).magnitude - 3f, 0f); val = point - ((EntityState)this).transform.position; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2 = num * normalized + ((EntityState)this).transform.position; val = ((EntityState)this).transform.position - val2; distance = ((Vector3)(ref val)).magnitude; val = val2 - ((EntityState)this).transform.position; direction = ((Vector3)(ref val)).normalized; duration = Mathf.Lerp(minDuration, maxDuration, distance / maxDistance); speed = distance / duration; startSpeed = speed * 1.5f; endSpeed = speed * 0.5f; foreach (GameObject hitBody in hitBodies) { if (Object.op_Implicit((Object)(object)hitBody) && Object.op_Implicit((Object)(object)hitBody.GetComponent<NetworkIdentity>())) { EntityStateMachine component = hitBody.GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)hitBody.GetComponent<SetStateOnHurt>()) && hitBody.GetComponent<SetStateOnHurt>().canBeFrozen) { bool flag = false; SkeweredState skeweredState = new SkeweredState { skewerDuration = waitTime, pullDuration = duration, destination = point }; component.SetInterruptState((EntityState)(object)skeweredState, (InterruptPriority)6); } } } if (Object.op_Implicit((Object)(object)((EntityState)this).GetComponent<KinematicCharacterMotor>())) { ((EntityState)this).GetComponent<KinematicCharacterMotor>().ForceUnground(0.1f); } weaponAnimator.WeaponRotationOverride(((Vector3)(ref normalized)).normalized * 500f + ((EntityState)this).transform.position); ((EntityState)this).PlayAnimation("FullBody, Override", "DragonLungePull", "Slash.playbackRate", duration * 0.8f, 0f); animator.SetFloat("DragonLunge.playbackRate", 1f); } public override void OnExit() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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) ((EntityState)this).PlayAnimation("Body", "Jump"); animator.SetFloat("DragonLunge.playbackRate", 1f); if (NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } weaponAnimator.StopWeaponOverride(); ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: 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_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= waitTime) { if (!pullStarted) { animator.SetFloat("DragonLunge.playbackRate", 1f); pullStarted = true; Util.PlaySound("LungeDash", ((EntityState)this).gameObject); } stopwatch += Time.fixedDeltaTime; if (stopwatch < duration) { speed = Mathf.Lerp(startSpeed, endSpeed, stopwatch / duration); ((EntityState)this).characterDirection.forward = direction; ((EntityState)this).characterMotor.velocity = direction * speed; } if (!(stopwatch >= duration)) { return; } animator.SetFloat("DragonLunge.playbackRate", 0f); if (((EntityState)this).inputBank.skill3.down) { ((EntityState)this).characterMotor.velocity = Vector3.zero; if (((ButtonState)(ref ((EntityState)this).inputBank.jump)).justPressed) { ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); ((BaseState)this).SmallHop(((EntityState)this).characterMotor, ((EntityState)this).characterBody.jumpPower); ((EntityState)this).outer.SetNextStateToMain(); return; } } if (!hitWorld) { ((EntityState)this).outer.SetNextStateToMain(); } else if (!((EntityState)this).inputBank.skill3.down) { ((EntityState)this).outer.SetNextStateToMain(); } } else { ((EntityState)this).characterMotor.velocity = Vector3.zero; animator.SetFloat("DragonLunge.playbackRate", 0f); } } 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; } public override void OnSerialize(NetworkWriter writer) { //IL_0083: 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) ((BaseSkillState)this).OnSerialize(writer); int num = 0; foreach (GameObject hitBody in hitBodies) { if (Object.op_Implicit((Object)(object)hitBody) && Object.op_Implicit((Object)(object)hitBody.GetComponent<NetworkIdentity>())) { num++; } } writer.Write(num); writer.Write((double)waitTime); writer.Write(hitWorld); writer.Write(point); foreach (GameObject hitBody2 in hitBodies) { if (Object.op_Implicit((Object)(object)hitBody2) && Object.op_Implicit((Object)(object)hitBody2.GetComponent<NetworkIdentity>())) { writer.Write(hitBody2.GetComponent<NetworkIdentity>().netId); } } } public override void OnDeserialize(NetworkReader reader) { //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_004c: Unknown result type (might be due to invalid IL or missing references) hitBodies = new List<GameObject>(); ((BaseSkillState)this).OnDeserialize(reader); waitTime = (float)reader.ReadDouble(); hitWorld = reader.ReadBoolean(); point = reader.ReadVector3(); int num = reader.ReadInt32(); for (int i = 0; i < num; i++) { hitBodies.Add(NetworkServer.FindLocalObject(reader.ReadNetworkId())); } } } public class PullDamage : BaseSkillState { public bool isFirst = true; private OverlapAttack attack; public CharacterBody target; private GameObject nextTarget; private Vector3 lastKnownPosition; private CharacterModel characterModel; private Transform modelTransform; private HurtBoxGroup hurtboxGroup; public Vector3 point; private Vector3 direction; private float distance; private float duration; private float speed; private float startSpeed; private float endSpeed; private float fireTime; private float exitHopVelocity = 15f; public int swingIndex; private bool hasFired; private float attackRadius = 3.5f; private float procCoefficient = 0.75f; private float damageCoefficient = 3f; public static float minDuration = 0.2f; public static float maxDuration = 0.6f; public static float maxDistance = 80f; public static float minVelocity = 0.7f; public static float velocityMultiplier = 1.3f; private float maxAngle = 60f; private Animator animator; private float stopwatch; private DancerComponent weaponAnimator; public override void OnEnter() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Expected O, but got Unknown //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_027f: 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_0289: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); } animator = ((EntityState)this).GetModelAnimator(); weaponAnimator = ((EntityState)this).GetComponent<DancerComponent>(); Vector3 val = ((EntityState)this).transform.position - target.coreTransform.position; distance = ((Vector3)(ref val)).magnitude; val = target.coreTransform.position - ((EntityState)this).transform.position; direction = ((Vector3)(ref val)).normalized; duration = Mathf.Lerp(minDuration, maxDuration, distance / maxDistance); duration /= ((BaseState)this).attackSpeedStat; speed = distance / duration; startSpeed = speed * 2f; endSpeed = speed * 0.5f; fireTime = 0.4f * duration; HitBoxGroup hitBoxGroup = null; Transform val2 = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)val2)) { hitBoxGroup = Array.Find(((Component)val2).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "NAir"); } attack = new OverlapAttack(); attack.damageType = DamageTypeCombo.op_Implicit((DamageType)0); attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * ((BaseState)this).damageStat; attack.procCoefficient = procCoefficient; attack.hitEffectPrefab = GroundLight.finisherHitEffectPrefab; attack.forceVector = Vector3.zero; attack.pushAwayForce = 0f; attack.hitBoxGroup = hitBoxGroup; attack.isCrit = ((BaseState)this).RollCrit(); attack.impactSound = Assets.sword2HitSoundEvent.index; if (Object.op_Implicit((Object)(object)((EntityState)this).GetComponent<KinematicCharacterMotor>())) { ((EntityState)this).GetComponent<KinematicCharacterMotor>().ForceUnground(0.1f); } Vector3 val3 = target.coreTransform.position - ((EntityState)this).transform.position; weaponAnimator.WeaponRotationOverride(((Vector3)(ref val3)).normalized * 500f + ((EntityState)this).transform.position); if (isFirst) { ((EntityState)this).PlayAnimation("FullBody, Override", "DragonLungePull", "Slash.playbackRate", duration * 3f, 0f); } modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; obj.invisibilityCount++; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter + 1; } } public override void OnExit() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; obj.invisibilityCount--; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter - 1; } if (NetworkServer.active) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } weaponAnimator.StopWeaponOverride(); ((EntityState)this).OnExit(); } private void Fire() { if (!hasFired) { hasFired = true; ((EntityState)this).PlayAnimation("FullBody, Override", "Jab" + (swingIndex + 1), "Slash.playbackRate", duration * 1f, 0f); if (Util.HasEffectiveAuthority(((EntityState)this).gameObject)) { PlaySwingEffect(); } } if (((EntityState)this).isAuthority && attack.Fire((List<HurtBox>)null)) { Util.PlayAttackSpeedSound("Jab" + (swingIndex + 1), ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); } } private void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(Assets.swingEffect, ((EntityState)this).gameObject, "eJab" + (swingIndex + 1), false); } public override void FixedUpdate() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_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_0049: 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) //IL_0051: 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_0093: 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_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); Vector3 val; Vector3 val2; if (Object.op_Implicit((Object)(object)target)) { val = (lastKnownPosition = target.coreTransform.position); val2 = val; } else { val2 = lastKnownPosition; } Vector3 val3 = val2; val = val3 - ((EntityState)this).transform.position; direction = ((Vector3)(ref val)).normalized; ((EntityState)this).characterDirection.forward = direction; speed = Mathf.Lerp(startSpeed, endSpeed, ((EntityState)this).fixedAge / duration); ((EntityState)this).characterMotor.velocity = direction * speed; if (((EntityState)this).fixedAge >= duration * fireTime) { Fire(); } if (!(((EntityState)this).fixedAge >= duration)) { return; } if (Object.op_Implicit((Object)(object)nextTarget) && ((EntityState)this).inputBank.skill3.down) { if (swingIndex == 0) { swingIndex = 1; } else { swingIndex = 0; } ((EntityState)this).outer.SetNextState((EntityState)(object)new PullDamage { target = nextTarget.GetComponent<CharacterBody>(), swingIndex = swingIndex, isFirst = false }); } else { ((EntityState)this).outer.SetNextStateToMain(); ((EntityState)this).characterMotor.velocity = Vector3.zero; } } 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; } } public class Riposte : BaseSkillState { public float charge; public static float radius = 5f; public static float perfectDamageCoefficient = 24f; public static float maxDamageCoefficient = 18f; public static float minDamageCoefficient = 12f; private float damageCoefficient; public static Vector3 force = Vector3.up * 2000f; public static float procCoefficient = 1f; private float duration = 0.67f; private bool hasFired; private Ray aimRay; private float fireTime; public override void OnEnter() { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration /= ((BaseState)this).attackSpeedStat; if (charge >= 1f) { damageCoefficient = perfectDamageCoefficient; } else { damageCoefficient = Mathf.Lerp(maxDamageCoefficient, minDamageCoefficient, charge); } fireTime = 0.74626863f * duration; ((BaseState)this).StartAimMode(duration, false); ((EntityState)this).GetModelAnimator(); aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).PlayAnimation("FullBody, Override", "FAir", "Slash.playbackRate", 1f, 0f); } private void Fire() { //IL_002b: 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_0038: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a9: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: 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_00cf: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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_00e8: 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) if (!hasFired) { hasFired = true; Util.PlaySound("FireFireball", ((EntityState)this).gameObject); Ray val = ((BaseState)this).GetAimRay(); Vector3 point = ((Ray)(ref val)).GetPoint(3f); point.y = 0f; if (new BlastAttack { attacker = ((EntityState)this).gameObject, procChainMask = default(ProcChainMask), impactEffect = (EffectIndex)(-1), losType = (LoSType)1, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)0), procCoefficient = procCoefficient, bonusForce = force, baseForce = 0f, baseDamage = damageCoefficient * ((BaseState)this).damageStat, falloffModel = (FalloffModel)0, radius = radius, position = point, attackerFiltering = (AttackerFiltering)2, teamIndex = ((BaseState)this).GetTeam(), inflictor = ((EntityState)this).gameObject, crit = ((BaseState)this).RollCrit() }.Fire().hitCount > 0) { OnHitEnemyAuthority(); Util.PlaySound("SwordHit2", ((EntityState)this).gameObject); } } } private void OnHitEnemyAuthority() { } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); ((EntityState)this).fixedAge = ((EntityState)this).fixedAge + Time.fixedDeltaTime; if (((EntityState)this).fixedAge >= fireTime) { Fire(); } if (((EntityState)this).fixedAge >= duration && Util.HasEffectiveAuthority(((EntityState)this).gameObject)) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class SpinDash : BaseSkillState { public Vector3 launchTarget; public bool launchVectorOverride; public bool cancelledFromSprinting; public bool earlyExitJump; public string critHitSoundString; private List<HealthComponent> hits; private int numResets = 2; private int timesReset = 0; protected float attackResetInterval; private float attackResetStopwatch; public int swingIndex; protected string hitboxName = "SpinLunge"; protected DamageType damageType = (DamageType)0; protected float damageCoefficient = 5.4f; protected float procCoefficient = 0.75f; protected float pushForce = 3000f; protected float baseDuration = 0.55f; protected float attackStartTime = 0.15f; protected float attackEndTime = 0.9f; protected float hitStopDuration = 0.05f; protected float attackRecoil = 2f; protected float hitHopVelocity = 0f; protected bool cancelled = false; protected string swingSoundString = ""; protected string hitSoundString = ""; private float speedCoefficient = 35f; private bool hitGround; protected string muzzleString = "eDashAttack"; private Transform muzzleTransform; protected GameObject swingEffectPrefab; private GameObject swingEffect; protected GameObject hitEffectPrefab; protected NetworkSoundEventIndex impactSound; public float duration; private bool hasFired; private float hitPauseTimer; protected OverlapAttack attack; protected bool inHitPause; protected float stopwatch; protected Animator animator; private Vector3 moveVector; private HitStopCachedState hitStopCachedState; private Vector3 storedVelocity; private DancerComponent dancerComponent; private bool reset = true; protected float anim = 1f; protected Vector3 slideVector; protected Quaternion slideRotation; public override void OnEnter() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ChildLocator component = ((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { muzzleTransform = component.FindChild("eDashAttack"); } } dancerComponent = ((Component)((EntityState)this).characterBody).GetComponent<DancerComponent>(); moveVector = ((EntityState)this).inputBank.aimDirection; moveVector.y = Mathf.Clamp(moveVector.y, -0.2f, 0.2f); moveVector = ((Vector3)(ref moveVector)).normalized; ((EntityState)this).characterMotor.velocity.y = 0f; AttackSetup(); StartAttack(); } private void AttackSetup() { //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_009e: Unknown result type (might be d