Decompiled source of Woodie v2.0.3
Woodie.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EmotesAPI; using EntityStates; using EntityStates.BeetleGuardMonster; using EntityStates.BrotherMonster; using EntityStates.Commando; using EntityStates.Croco; using EntityStates.Merc; using EntityStates.Merc.Weapon; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2; using On.RoR2.Projectile; using R2API; using R2API.Utils; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.Achievements; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Animations; using UnityEngine.Networking; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Dragonyck")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Woodie")] [assembly: AssemblyTitle("Woodie")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Woodie; public static class Achievements { [RegisterAchievement("WOODIE_MASTERY", "ACHIEVEMENT_WOODIE_MASTERY_UNLOCKABLE_ID", null, typeof(SurvivorChallengeServerAchievement))] public class MasteryUnlockable : BaseAchievement { private class SurvivorChallengeServerAchievement : BaseServerAchievement { private BodyIndex requiredVictimBodyIndice; public override void OnInstall() { //IL_000e: 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) ((BaseServerAchievement)this).OnInstall(); requiredVictimBodyIndice = BodyCatalog.FindBodyIndex("BrotherHurtBody"); GlobalEventManager.onCharacterDeathGlobal += OnCharacterDeathGlobal; } private void OnCharacterDeathGlobal(DamageReport damageReport) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) if (requiredVictimBodyIndice == damageReport.victimBodyIndex && PlayerCharacterMasterController.instances.Contains(base.serverAchievementTracker.networkUser.master.playerCharacterMasterController)) { ((BaseServerAchievement)this).Grant(); } } public override void OnUninstall() { ((BaseServerAchievement)this).OnUninstall(); GlobalEventManager.onCharacterDeathGlobal -= OnCharacterDeathGlobal; } } public override BodyIndex LookUpRequiredBodyIndex() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex("WoodieBody"); } public override void OnBodyRequirementMet() { ((BaseAchievement)this).OnBodyRequirementMet(); ((BaseAchievement)this).SetServerTracked(true); } public override void OnBodyRequirementBroken() { ((BaseAchievement)this).SetServerTracked(false); ((BaseAchievement)this).OnBodyRequirementBroken(); } } internal static UnlockableDef masteryUnlock; public static void RegisterUnlockables() { //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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) masteryUnlock = NewUnlockable<MasteryUnlockable>("MASTERY", LoadoutAPI.CreateSkinIcon(new Color(0.9058824f, 0.6039216f, 0.3215686f), Color.white, new Color(0.64706f, 0.48627f, 0.29412f), new Color(0.43529f, 0.32157f, 0.2902f)), "WOODIE: Mastery", "As Woodie, beat Mithrix on Monsoon."); } private static UnlockableDef NewUnlockable<T>(string AchievementIdentifier, Sprite Icon, string Title, string Description) where T : BaseAchievement { string text = "ACHIEVEMENT_WOODIE_"; UnlockableDef val = ScriptableObject.CreateInstance<UnlockableDef>(); string langName = text + AchievementIdentifier + "_NAME"; string langDesc = text + AchievementIdentifier + "_DESCRIPTION"; LanguageAPI.Add(langName, Title); LanguageAPI.Add(langDesc, Description); Func<string> func = () => Language.GetStringFormatted("UNLOCKED_FORMAT", new object[2] { Language.GetString(langName), Language.GetString(langDesc) }); Type typeFromHandle = typeof(T); val.cachedName = text + AchievementIdentifier + "_UNLOCKABLE_ID"; val.getHowToUnlockString = func; val.getUnlockedString = func; val.achievementIcon = Icon; val.sortScore = 200; val.hidden = false; ContentAddition.AddUnlockableDef(val); return val; } } public static class Assets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Woodie.woodieassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Woodie.Woodie.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class AxeThrowHitCallback : MonoBehaviour { public bool Hit; } internal class AxeThrowBehaviour : MonoBehaviour { private GameObject owner; private AxeThrowHitCallback hit; private bool enemyHit; private CharacterBody body; private void FixedUpdate() { ProjectileController component = ((Component)this).GetComponent<ProjectileController>(); if (Object.op_Implicit((Object)(object)component) && (Object)(object)owner == (Object)null) { owner = component.Networkowner; if (Object.op_Implicit((Object)(object)owner) && (Object)(object)hit == (Object)null) { hit = owner.GetComponent<AxeThrowHitCallback>(); } } } private void OnEnable() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ProjectileImpactExplosion.OnProjectileImpact += new hook_OnProjectileImpact(ProjectileImpactExplosion_OnProjectileImpact); } private void OnDisable() { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)hit)) { hit.Hit = true; } if (Object.op_Implicit((Object)(object)body) && enemyHit) { bool flag = true; int buffCount = body.GetBuffCount(Prefabs.aktSpdBuff); if (buffCount < 30 && flag) { body.AddTimedBuff(Prefabs.aktSpdBuff, 3f); flag = false; } } ProjectileImpactExplosion.OnProjectileImpact -= new hook_OnProjectileImpact(ProjectileImpactExplosion_OnProjectileImpact); } private void ProjectileImpactExplosion_OnProjectileImpact(orig_OnProjectileImpact orig, ProjectileImpactExplosion self, ProjectileImpactInfo impactInfo) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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) orig.Invoke(self, impactInfo); if (!Object.op_Implicit((Object)(object)self) || !Object.op_Implicit((Object)(object)((ProjectileExplosion)self).projectileController) || !Object.op_Implicit((Object)(object)((ProjectileExplosion)self).projectileController.owner) || !((Object)((ProjectileExplosion)self).projectileController.owner).name.Contains("Woodie") || !NetworkServer.active) { return; } CharacterBody component = ((ProjectileExplosion)self).projectileController.owner.GetComponent<CharacterBody>(); body = component; if (Object.op_Implicit((Object)(object)impactInfo.collider)) { HurtBox component2 = ((Component)impactInfo.collider).GetComponent<HurtBox>(); if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.healthComponent)) { enemyHit = true; } } } } internal class WoodieBehaviour : HuntressTracker { protected internal class Tracker2 : HuntressTracker { private WoodieBehaviour behaviour; private float stopwatch; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown base.indicator = new Indicator(((Component)this).gameObject, Prefabs.woodieIndicator); } private void OnEnable() { ((HuntressTracker)this).OnEnable(); base.search.minDistanceFilter = 4f; base.maxTrackingDistance = 60f; base.maxTrackingAngle = 35f; base.trackerUpdateFrequency = 10f; behaviour = ((Component)this).GetComponent<WoodieBehaviour>(); } private void FixedUpdate() { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_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_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) ((HuntressTracker)this).FixedUpdate(); base.trackerUpdateStopwatch = 0f; stopwatch += Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)behaviour)) { if (behaviour.target && behaviour.enableTracker2 && stopwatch >= 0.1f) { stopwatch = 0f; Ray val = default(Ray); ((Ray)(ref val))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection); base.search.teamMaskFilter = TeamMask.GetUnprotectedTeams(base.teamComponent.teamIndex); base.search.filterByLoS = true; base.search.searchOrigin = ((Ray)(ref val)).origin; base.search.searchDirection = ((Ray)(ref val)).direction; base.search.sortMode = (SortMode)1; base.search.maxDistanceFilter = base.maxTrackingDistance; base.search.maxAngleFilter = base.maxTrackingAngle; base.search.RefreshCandidates(); base.search.FilterOutGameObject(((Component)this).gameObject); base.search.FilterOutGameObject(((Component)((HuntressTracker)behaviour).GetTrackingTarget().healthComponent).gameObject); base.trackingTarget = base.search.GetResults().FirstOrDefault(); base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null); behaviour.target2 = base.trackingTarget; } if (base.indicator != null) { base.indicator.active = behaviour.enableTracker2; } } } } protected internal class Tracker3 : HuntressTracker { private WoodieBehaviour behaviour; private float stopwatch; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown base.indicator = new Indicator(((Component)this).gameObject, Prefabs.woodieIndicator); } private void OnEnable() { ((HuntressTracker)this).OnEnable(); base.search.minDistanceFilter = 4f; base.maxTrackingDistance = 60f; base.maxTrackingAngle = 35f; base.trackerUpdateFrequency = 10f; behaviour = ((Component)this).GetComponent<WoodieBehaviour>(); } private void FixedUpdate() { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_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_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) ((HuntressTracker)this).FixedUpdate(); base.trackerUpdateStopwatch = 0f; stopwatch += Time.fixedDeltaTime; if (!Object.op_Implicit((Object)(object)behaviour)) { return; } if (behaviour.target && behaviour.enableTracker3 && stopwatch >= 0.1f) { stopwatch = 0f; Ray val = default(Ray); ((Ray)(ref val))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection); base.search.teamMaskFilter = TeamMask.GetUnprotectedTeams(base.teamComponent.teamIndex); base.search.filterByLoS = true; base.search.searchOrigin = ((Ray)(ref val)).origin; base.search.searchDirection = ((Ray)(ref val)).direction; base.search.sortMode = (SortMode)1; base.search.maxDistanceFilter = base.maxTrackingDistance; base.search.maxAngleFilter = base.maxTrackingAngle; base.search.RefreshCandidates(); base.search.FilterOutGameObject(((Component)this).gameObject); base.search.FilterOutGameObject(((Component)((HuntressTracker)behaviour).GetTrackingTarget().healthComponent).gameObject); if (Object.op_Implicit((Object)(object)behaviour.target2)) { base.search.FilterOutGameObject(((Component)behaviour.target2.healthComponent).gameObject); } base.trackingTarget = base.search.GetResults().FirstOrDefault(); base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null); behaviour.target3 = base.trackingTarget; } if (base.indicator != null) { base.indicator.active = behaviour.enableTracker3; } } } public bool canExecute = true; public bool enable = true; public bool charge1 = false; public bool enableTracker2 = false; public bool enableTracker3 = false; public Tracker2 tracker2; public Tracker3 tracker3; public SkillLocator skillLocator; public HurtBox target2; public HurtBox target3; public bool changeMat = false; public CharacterModel characterModel; public Material axe; public Material axe1; public Material axe2; public Material axe3; public float receivedDamage = 0f; public string path1 = "RoR2/Base/AttackSpeedOnCrit/matWolfhatOverlay.mat"; public string path2 = "RoR2/Base/ArmorReductionOnHit/matPulverizedOverlay.mat"; public string sfx = "Play_bellBody_attackLand"; public bool cancelTransformation = false; public bool cancelDive = false; public uint ID; private Material mat { get { if (enableTracker2) { if (enableTracker3) { return axe3; } return axe2; } if (charge1) { return axe1; } return axe; } } [SerializeField] public bool target => Object.op_Implicit((Object)(object)base.trackingTarget) ? true : false; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown base.indicator = new Indicator(((Component)this).gameObject, Prefabs.woodieIndicator); } private void OnEnable() { ((HuntressTracker)this).OnEnable(); tracker2 = ((Component)this).gameObject.GetComponent<Tracker2>(); if (!Object.op_Implicit((Object)(object)tracker2)) { tracker2 = ((Component)this).gameObject.AddComponent<Tracker2>(); } tracker3 = ((Component)this).gameObject.GetComponent<Tracker3>(); if (!Object.op_Implicit((Object)(object)tracker3)) { tracker3 = ((Component)this).gameObject.AddComponent<Tracker3>(); } base.search.minDistanceFilter = 4f; base.maxTrackingDistance = 60f; base.maxTrackingAngle = 15f; base.trackerUpdateFrequency = 10f; skillLocator = ((Component)this).GetComponent<SkillLocator>(); } public void ResetMat() { changeMat = false; charge1 = false; enableTracker2 = false; enableTracker3 = false; characterModel.baseRendererInfos[0].defaultMaterial = axe; } private void FixedUpdate() { ((HuntressTracker)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)skillLocator) && Object.op_Implicit((Object)(object)skillLocator) && Object.op_Implicit((Object)(object)skillLocator.primary) && Object.op_Implicit((Object)(object)skillLocator.secondary) && !Utility.IsNullOrWhiteSpace(skillLocator.primary.skillNameToken) && !Utility.IsNullOrWhiteSpace(skillLocator.secondary.skillNameToken) && skillLocator.primary.skillNameToken != "WOODIE_M1NEW" && skillLocator.secondary.skillDef.skillNameToken != "WOODIE_M2") { enable = false; } if (changeMat) { characterModel.baseRendererInfos[0].defaultMaterial = mat; } base.indicator.active = enable; } } internal class BeaverPrimary : BaseSkillState { public enum ComboState { Attack1, Attack2 } private float damageCoefficient = 1.5f; private float stopwatch; private float attackDuration; private float earlyExitDuration; private Animator animator; private OverlapAttack overlapAttack; private bool hasSwung; private bool hasHit; internal ComboState comboState; private string slashChildName; private HitStopCachedState hitStopCachedState; public GameObject swingEffectPrefab = Prefabs.beaverSwingEffect; public GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXSlash.prefab").WaitForCompletion(); private string attackSoundString = Slash.slash1Sound; private float swingtimer; private bool hop; public override void OnEnter() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); hop = true; ((BaseState)this).StartAimMode(((BaseState)this).GetAimRay(), 3f, false); stopwatch = 0f; attackDuration = GroundLight.baseComboAttackDuration / ((BaseState)this).attackSpeedStat; earlyExitDuration = GroundLight.baseEarlyExitDuration / ((BaseState)this).attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); bool @bool = animator.GetBool("isMoving"); bool bool2 = animator.GetBool("isGrounded"); swingtimer = 0f; animator.SetFloat("Swing", 0f); switch (comboState) { case ComboState.Attack1: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Slash"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AttackLeft", "M1", attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AttackLeft", "M1", attackDuration / 2f, 0.05f); } ((BaseState)this).FindModelChild("BeaverSwingMuzzle").localRotation = Quaternion.Euler(0f, 10f, 345f); swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "BeaverSwingMuzzle"; break; case ComboState.Attack2: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient + 0.5f, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Slash"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AttackRight", "M1", attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AttackRight", "M1", attackDuration / 2f, 0.05f); } ((BaseState)this).FindModelChild("BeaverSwingMuzzle").localRotation = Quaternion.Euler(0f, 350f, 25f); swingEffectPrefab.transform.localScale = new Vector3(-1f, 1f, 1f); slashChildName = "BeaverSwingMuzzle"; break; } ((EntityState)this).characterBody.SetAimTimer(attackDuration + 1f); overlapAttack.hitEffectPrefab = hitEffectPrefab; overlapAttack.damageType = (DamageType)0; } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).inputBank.skill3.down || ((EntityState)this).inputBank.skill4.down) { ((EntityState)this).outer.SetNextStateToMain(); return; } ((EntityState)this).characterBody.isSprinting = false; swingtimer += Time.fixedDeltaTime; animator.SetFloat("Swing", swingtimer); if (((EntityState)this).isAuthority) { bool flag = ((BaseState)this).FireMeleeOverlap(overlapAttack, animator, "Swing", GroundLight.forceMagnitude, true); hasHit |= flag; if (flag && !((BaseState)this).isGrounded && hop) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); hop = false; } } if (animator.GetFloat("Swing") > 0f && !hasSwung) { Util.PlayAttackSpeedSound(attackSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); HealthComponent healthComponent = ((EntityState)this).characterBody.healthComponent; CharacterDirection component = ((Component)((EntityState)this).characterBody).GetComponent<CharacterDirection>(); if (Object.op_Implicit((Object)(object)healthComponent) && NetworkServer.active) { healthComponent.TakeDamageForce(GroundLight.selfForceMagnitude * component.forward, true, false); } hasSwung = true; EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, slashChildName, false); } stopwatch += Time.fixedDeltaTime; if (!((EntityState)this).isAuthority || !(stopwatch >= attackDuration - earlyExitDuration)) { return; } if (hasSwung || overlapAttack.Fire((List<HurtBox>)null)) { } if (!((EntityState)this).inputBank.skill1.down || comboState != ComboState.Attack2) { } if (stopwatch >= attackDuration) { if (comboState != ComboState.Attack2) { BeaverPrimary beaverPrimary = new BeaverPrimary(); beaverPrimary.comboState = comboState + 1; ((EntityState)this).outer.SetNextState((EntityState)(object)beaverPrimary); } else { ((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 override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write((byte)comboState); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); comboState = (ComboState)reader.ReadByte(); } } internal class BeaverSecondary : BaseSkillState { private float duration = 0.35f; public override void OnEnter() { //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_008c: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_010c: 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_0119: 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_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Util.PlaySound("Play_parent_attack1_slam", ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(Prefabs.beaverSpinEffect, ((EntityState)this).gameObject, "CenterMuzzle", false); ((EntityState)this).PlayAnimation("FullBody, Override", "Secondary", "M2", duration); if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 8f); } if (((EntityState)this).isAuthority) { BlastAttack val = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * 5.5f, baseForce = 1200f, bonusForce = Vector3.back * 1200f, crit = ((BaseState)this).RollCrit(), damageType = (DamageType)0, falloffModel = (FalloffModel)0, procCoefficient = 1f, radius = 12f, position = ((EntityState)this).characterBody.corePosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXLarge.prefab").WaitForCompletion()), teamIndex = ((EntityState)this).teamComponent.teamIndex }; DamageAPI.AddModdedDamageType(val, Prefabs.fracture); val.Fire(); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class BeaverSpecial : BaseSkillState { private float duration = 3f; public override void OnEnter() { //IL_00b7: 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_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("Gesture, Override", "Special"); ((BaseState)this).StartAimMode(duration, false); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Prefabs.block, duration); } WoodieBehaviour component = ((EntityState)this).GetComponent<WoodieBehaviour>(); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val.duration = duration; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = Addressables.LoadAssetAsync<Material>((object)component.path1).WaitForCompletion(); val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>()); TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val2.duration = duration + 0.1f; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = Addressables.LoadAssetAsync<Material>((object)component.path2).WaitForCompletion(); val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>()); } Util.PlaySound(component.sfx, ((EntityState)this).gameObject); ((EntityState)this).characterBody.isSprinting = false; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); ((EntityState)this).GetModelAnimator().SetTrigger("Trigger"); if (!NetworkServer.active) { return; } WoodieBehaviour component = ((EntityState)this).GetComponent<WoodieBehaviour>(); float receivedDamage = component.receivedDamage; if (!(receivedDamage > 0f)) { return; } ReadOnlyCollection<TeamComponent> teamMembers = TeamComponent.GetTeamMembers(((EntityState)this).teamComponent.teamIndex); for (int i = 0; i < teamMembers.Count; i++) { if (teamMembers[i].body.isPlayerControlled) { if ((Object)(object)teamMembers[i].body == (Object)(object)((EntityState)this).characterBody) { teamMembers[i].body.healthComponent.AddBarrier(receivedDamage * 0.5f); } else { teamMembers[i].body.healthComponent.AddBarrier(receivedDamage); } } } component.receivedDamage = 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)6; } } internal class BeaverUtility : BaseSkillState { private float duration = 1.5f; private WoodieBehaviour behaviour; public override void OnEnter() { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<WoodieBehaviour>(); behaviour.canExecute = false; ((EntityState)this).GetModelAnimator().SetBool("DiveCancel", false); ((EntityState)this).GetModelAnimator().SetBool("DiveOver", false); ((EntityState)this).PlayAnimation("Dive", "Utility"); Util.PlaySound("Play_moonBrother_phaseJump_jumpAway", ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { ((EntityState)this).characterBody.isSprinting = true; ((EntityState)this).characterMotor.velocity = Vector3.up * (5f * ((BaseState)this).moveSpeedStat); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!((EntityState)this).skillLocator.special.HasSkillOverrideOfPriority((SkillOverridePriority)4)) { ((EntityState)this).GetModelAnimator().SetBool("DiveCancel", true); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } if (((EntityState)this).fixedAge >= 0.25f && ((EntityState)this).inputBank.skill3.down) { ((EntityState)this).outer.SetNextState((EntityState)(object)new BeaverUtilityDrop()); } if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).GetModelAnimator().SetBool("DiveCancel", true); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } } public override void OnExit() { ((EntityState)this).OnExit(); behaviour.canExecute = true; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)6; } } internal class BeaverUtilityDrop : BaseSkillState { private float duration = 2f; private Vector3 direction; private WoodieBehaviour behaviour; public override void OnEnter() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<WoodieBehaviour>(); behaviour.canExecute = false; ((EntityState)this).GetModelAnimator().SetBool("DiveOver", true); if (((EntityState)this).isAuthority) { ((EntityState)this).characterBody.isSprinting = true; } direction = ((EntityState)this).characterDirection.forward + Vector3.down; } public override void FixedUpdate() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //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_0078: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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_0128: Unknown result type (might be due to invalid IL or missing references) //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_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: 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_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018f: 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_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (!((EntityState)this).skillLocator.special.HasSkillOverrideOfPriority((SkillOverridePriority)4) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += direction * (15f * ((BaseState)this).moveSpeedStat) * Time.fixedDeltaTime; } if (((BaseState)this).isGrounded) { Util.PlaySound("Play_moonBrother_phaseJump_land_impact", ((EntityState)this).gameObject); EffectManager.SpawnEffect(GroundSlam.slamEffectPrefab, new EffectData { origin = ((EntityState)this).characterBody.footPosition, scale = 15f }, false); if (((EntityState)this).isAuthority) { BlastAttack val = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * 5.5f, baseForce = 1200f, bonusForce = Vector3.back * 1200f, crit = ((BaseState)this).RollCrit(), damageType = (DamageType)64, falloffModel = (FalloffModel)0, procCoefficient = 1f, radius = 15f, position = ((EntityState)this).characterBody.footPosition, attackerFiltering = (AttackerFiltering)2, impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXLarge.prefab").WaitForCompletion()), teamIndex = ((EntityState)this).teamComponent.teamIndex }; DamageAPI.AddModdedDamageType(val, Prefabs.execute); val.Fire(); ((EntityState)this).outer.SetNextStateToMain(); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); behaviour.canExecute = true; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)6; } } internal class CharacterMain : GenericCharacterMain { private EntityStateMachine form; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); form = Array.Find(((EntityState)this).gameObject.GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Form"); } public override void FixedUpdate() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterMain)this).FixedUpdate(); if (buttonPressed(Woodie.emote1Key.Value) && form.IsInInitialState()) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Stump()); } if (buttonPressed(Woodie.emote2Key.Value) && form.IsInInitialState()) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Dance()); } } private bool buttonPressed(KeyCode key) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) if (PauseScreenController.instancesList.Count == 0 && ((BaseState)this).isGrounded && ((EntityState)this).characterBody.hasEffectiveAuthority && Input.GetKeyDown(key)) { return true; } return false; } } internal class BaseEmote : BaseState { public uint sound = 0u; public uint ID; public string anim; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", anim); if (sound != 0) { ID = AkSoundEngine.PostEvent(sound, ((EntityState)this).gameObject); } } public override void FixedUpdate() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 1f && ((EntityState)this).isAuthority && ((EntityState)this).inputBank.moveVector != Vector3.zero) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).GetModelAnimator().SetTrigger("EmoteOver"); AkSoundEngine.StopPlayingID(ID); } 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)6; } } internal class Stump : BaseEmote { private ParentConstraint component; public override void OnEnter() { anim = "Sit"; base.OnEnter(); component = ((Component)((EntityState)this).GetModelTransform()).GetComponentInChildren<ParentConstraint>(); ((Behaviour)component).enabled = 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)6; } public override void OnExit() { base.OnExit(); ((Behaviour)component).enabled = true; } } internal class Dance : BaseEmote { public override void OnEnter() { anim = "Dance"; sound = Sounds.Play_Woodie_Dance; base.OnEnter(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)6; } } internal class DeathState : DeathState { public override void OnEnter() { ((DeathState)this).OnEnter(); if (((EntityState)this).isAuthority) { Array.Find(((EntityState)this).gameObject.GetComponents<EntityStateMachine>(), (EntityStateMachine x) => x.customName == "Form").SetNextStateToMain(); } } } public class PrimarySkill : BaseState { public enum ComboState { Attack1, Attack2, Attack3 } private float baseComboAttackDuration = 0.6f; private float baseFinisherAttackDuration = 1f; private float baseEarlyExitDuration = 0.15f; private string baseComboAttackHitBoxGroupName = "Swing1"; private string baseFinisherAttackHitBoxGroupName = "Swing2"; private string attackSound = ""; private string playbackRateParam = "M1"; private float hitPauseDuration = 0.05f; private float forceMagnitude = -1500f; private float selfForceMagnitude = 3000f; private float comboDamageCoefficient = 1.7f; private float finisherDamageCoefficient = 2.5f; private float stopwatch; private float attackDuration; private float earlyExitDuration; private Animator animator; private OverlapAttack overlapAttack; private float hitPauseTimer; private bool isInHitPause; private bool hasSwung; private bool hasHit; internal ComboState comboState; private string slashChildName; private HitStopCachedState hitStopCachedState; public GameObject swingEffectPrefab = Prefabs.M1SwingEffect1; public GameObject hitEffectPrefab; private bool hop; public override void OnEnter() { //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_0245: 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) ((BaseState)this).OnEnter(); hop = true; ((BaseState)this).StartAimMode(3f, false); stopwatch = 0f; earlyExitDuration = baseEarlyExitDuration / base.attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); bool @bool = animator.GetBool("isMoving"); bool bool2 = animator.GetBool("isGrounded"); switch (comboState) { case ComboState.Attack1: attackDuration = baseComboAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(comboDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), baseComboAttackHitBoxGroupName); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing1", playbackRateParam, attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing1", playbackRateParam, attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffect; slashChildName = "SwingMuzzle"; break; case ComboState.Attack2: attackDuration = baseComboAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(comboDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), baseComboAttackHitBoxGroupName); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing2", playbackRateParam, attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing2", playbackRateParam, attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffect; slashChildName = "SwingMuzzle"; break; case ComboState.Attack3: attackDuration = baseFinisherAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(finisherDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), baseFinisherAttackHitBoxGroupName); overlapAttack.forceVector = ((EntityState)this).characterDirection.forward + Vector3.up; overlapAttack.pushAwayForce = forceMagnitude; if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing3", playbackRateParam, attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing3", playbackRateParam, attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffectStrong; slashChildName = "OverheadMuzzle"; break; } ((EntityState)this).characterBody.SetAimTimer(attackDuration + 1f); overlapAttack.hitEffectPrefab = hitEffectPrefab; } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_00a4: 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) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; hitPauseTimer -= Time.fixedDeltaTime; if (((EntityState)this).isAuthority) { bool flag = overlapAttack.Fire((List<HurtBox>)null); hasHit |= flag; if (flag) { if (hop) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); hop = false; } if (!isInHitPause) { hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, playbackRateParam); hitPauseTimer = hitPauseDuration / base.attackSpeedStat; isInHitPause = true; } } if (hitPauseTimer <= 0f && isInHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); isInHitPause = false; } } if (!hasSwung) { Util.PlayAttackSpeedSound(attackSound, ((EntityState)this).gameObject, base.attackSpeedStat); if (NetworkServer.active) { ((EntityState)this).characterBody.healthComponent.TakeDamageForce(selfForceMagnitude / base.attackSpeedStat * ((EntityState)this).characterDirection.forward, true, false); } hasSwung = true; EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, slashChildName, false); FireProjectile(); } if (!isInHitPause) { stopwatch += Time.fixedDeltaTime; } else { ((EntityState)this).characterMotor.velocity = Vector3.zero; animator.SetFloat(playbackRateParam, 0f); } if (!((EntityState)this).isAuthority || !(stopwatch >= attackDuration - earlyExitDuration)) { return; } if (((EntityState)this).inputBank.skill1.down && comboState != ComboState.Attack3) { PrimaryTransition primaryTransition = new PrimaryTransition(); primaryTransition.comboState = comboState + 1; if (comboState == ComboState.Attack1) { primaryTransition.transitionDuration = 0.25f; } ((EntityState)this).outer.SetNextState((EntityState)(object)primaryTransition); } else if (stopwatch >= attackDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void FireProjectile() { //IL_0011: 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_0060: 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_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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * 2f; val.damageColorIndex = (DamageColorIndex)0; val.force = 500f; val.owner = ((EntityState)this).gameObject; Ray aimRay = ((BaseState)this).GetAimRay(); val.position = ((Ray)(ref aimRay)).origin; val.procChainMask = default(ProcChainMask); val.projectilePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Vulture/WindbladeProjectile.prefab").WaitForCompletion(); aimRay = ((BaseState)this).GetAimRay(); val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.useFuseOverride = false; val.useSpeedOverride = false; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } 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) { ((EntityState)this).OnSerialize(writer); writer.Write((byte)comboState); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).OnDeserialize(reader); comboState = (ComboState)reader.ReadByte(); } } internal class PrimaryTransition : BaseSkillState { public PrimarySkill.ComboState comboState; public float transitionDuration = 0.5f; public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= transitionDuration / ((BaseState)this).attackSpeedStat && ((EntityState)this).isAuthority) { PrimarySkill primarySkill = new PrimarySkill(); primarySkill.comboState = comboState; ((EntityState)this).outer.SetNextState((EntityState)(object)primarySkill); } } 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 M1Skill : BaseState { public enum ComboState { Attack1, Attack2, Attack3 } internal static float comboDamageCoefficient = 1.7f; internal static float finisherDamageCoefficient = 2.5f; private float stopwatch; private float attackDuration; private float earlyExitDuration; private Animator animator; private OverlapAttack overlapAttack; private float hitPauseTimer; private bool isInHitPause; private bool hasSwung; private bool hasHit; internal ComboState comboState; private string slashChildName; private HitStopCachedState hitStopCachedState; public GameObject swingEffectPrefab = Prefabs.M1SwingEffect1; public GameObject hitEffectPrefab; private float swingtimer; private bool hop; public override void OnEnter() { //IL_0011: 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_0234: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); hop = true; ((BaseState)this).StartAimMode(((BaseState)this).GetAimRay(), 3f, false); stopwatch = 0f; earlyExitDuration = GroundLight.baseEarlyExitDuration / base.attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); bool @bool = animator.GetBool("isMoving"); bool bool2 = animator.GetBool("isGrounded"); swingtimer = 0f; animator.SetFloat("Swing", 0f); switch (comboState) { case ComboState.Attack1: attackDuration = GroundLight.baseComboAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(comboDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing1", "M1", attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing1", "M1", attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "SwingMuzzle"; break; case ComboState.Attack2: attackDuration = GroundLight.baseComboAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(comboDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing2", "M1", attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing2", "M1", attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = new Vector3(-1f, 1f, 1f); slashChildName = "SwingMuzzle"; break; case ComboState.Attack3: attackDuration = GroundLight.baseFinisherAttackDuration / base.attackSpeedStat; overlapAttack = ((BaseState)this).InitMeleeOverlap(finisherDamageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing2"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "Swing3", "M1", attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "Swing3", "M1", attackDuration / 2f, 0.05f); } hitEffectPrefab = Prefabs.HitEffectStrong; swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "OverheadMuzzle"; break; } ((EntityState)this).characterBody.SetAimTimer(attackDuration + 1f); overlapAttack.hitEffectPrefab = hitEffectPrefab; } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //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_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: 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_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; hitPauseTimer -= Time.fixedDeltaTime; swingtimer += Time.fixedDeltaTime; animator.SetFloat("Swing", swingtimer); if (((EntityState)this).isAuthority) { bool flag = ((BaseState)this).FireMeleeOverlap(overlapAttack, animator, "Swing", GroundLight.forceMagnitude, true); hasHit |= flag; if (flag) { if (hop) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); hop = false; } if (!isInHitPause) { hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "M1"); hitPauseTimer = GroundLight.hitPauseDuration / base.attackSpeedStat; isInHitPause = true; } } if (hitPauseTimer <= 0f && isInHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); isInHitPause = false; } } if (animator.GetFloat("Swing") > 0f && !hasSwung) { Util.PlayAttackSpeedSound("Play_Woodie_Swing", ((EntityState)this).gameObject, base.attackSpeedStat); HealthComponent healthComponent = ((EntityState)this).characterBody.healthComponent; CharacterDirection component = ((Component)((EntityState)this).characterBody).GetComponent<CharacterDirection>(); if (Object.op_Implicit((Object)(object)healthComponent) && NetworkServer.active) { healthComponent.TakeDamageForce(GroundLight.selfForceMagnitude * component.forward, true, false); } hasSwung = true; EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, slashChildName, false); } if (!isInHitPause) { stopwatch += Time.fixedDeltaTime; } else { ((EntityState)this).characterMotor.velocity = Vector3.zero; animator.SetFloat("M1", 0f); } if (((EntityState)this).isAuthority && stopwatch >= attackDuration - earlyExitDuration) { if (hasSwung || overlapAttack.Fire((List<HurtBox>)null)) { } if (((EntityState)this).inputBank.skill1.down && comboState != ComboState.Attack3) { M1Skill m1Skill = new M1Skill(); m1Skill.comboState = comboState + 1; ((EntityState)this).outer.SetNextState((EntityState)(object)m1Skill); } else if (stopwatch >= attackDuration) { ((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 override void OnSerialize(NetworkWriter writer) { ((EntityState)this).OnSerialize(writer); writer.Write((byte)comboState); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).OnDeserialize(reader); comboState = (ComboState)reader.ReadByte(); } } public class M1SkillEnter : BasicMeleeAttack, IStepSetter { public int step; public static float recoilAmplitude; public static float baseDurationBeforeInterruptable; [SerializeField] public float bloom; public static float comboFinisherBaseDuration; public static GameObject comboFinisherSwingEffectPrefab; public static float comboFinisherhitPauseDuration; public static float comboFinisherDamageCoefficient; public static float comboFinisherBloom; public static float comboFinisherBaseDurationBeforeInterruptable; public static string slash1Sound; public static string slash3Sound; private string animationStateName; private float durationBeforeInterruptable; private bool isComboFinisher => step == 2; public override bool allowExitFire => Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && !((EntityState)this).characterBody.isSprinting; void IStepSetter.SetStep(int i) { step = i; } public override void OnEnter() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) if (isComboFinisher) { base.swingEffectPrefab = Prefabs.M1SwingEffect1; base.hitPauseDuration = GroundLight2.comboFinisherhitPauseDuration; base.damageCoefficient = GroundLight2.comboFinisherDamageCoefficient; bloom = GroundLight2.comboFinisherBloom; base.hitBoxGroupName = "Swing2"; base.baseDuration = GroundLight2.comboFinisherBaseDuration; } ((BasicMeleeAttack)this).OnEnter(); CharacterDirection characterDirection = ((EntityState)this).characterDirection; Ray aimRay = ((BaseState)this).GetAimRay(); characterDirection.forward = ((Ray)(ref aimRay)).direction; durationBeforeInterruptable = (isComboFinisher ? (GroundLight2.comboFinisherBaseDurationBeforeInterruptable / ((BaseState)this).attackSpeedStat) : (GroundLight2.baseDurationBeforeInterruptable / ((BaseState)this).attackSpeedStat)); } public override void OnExit() { ((BasicMeleeAttack)this).OnExit(); } public override void AuthorityFixedUpdate() { ((BasicMeleeAttack)this).AuthorityFixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; } public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack) { ((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack); } public override void PlayAnimation() { ((EntityState)this).characterBody.isSprinting = false; animationStateName = ""; switch (step) { case 0: animationStateName = "Swing1"; break; case 1: animationStateName = "Swing1"; break; case 2: animationStateName = "Swing2"; break; } bool @bool = base.animator.GetBool("isMoving"); bool bool2 = base.animator.GetBool("isGrounded"); if (!@bool && bool2) { ((EntityState)this).PlayCrossfade("FullBody, Override", animationStateName, "M1", base.duration, 0.05f); } else { ((EntityState)this).PlayCrossfade("Gesture, Override", animationStateName, "M1", base.duration, 0.05f); } } public override void OnMeleeHitAuthority() { ((BasicMeleeAttack)this).OnMeleeHitAuthority(); ((EntityState)this).characterBody.AddSpreadBloom(bloom); } public override void BeginMeleeAttackEffect() { base.swingEffectMuzzleString = animationStateName; ((BaseState)this).AddRecoil(-0.1f * GroundLight2.recoilAmplitude, 0.1f * GroundLight2.recoilAmplitude, -1f * GroundLight2.recoilAmplitude, 1f * GroundLight2.recoilAmplitude); ((BasicMeleeAttack)this).BeginMeleeAttackEffect(); } public override void OnSerialize(NetworkWriter writer) { ((EntityState)this).OnSerialize(writer); writer.Write((byte)step); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).OnDeserialize(reader); step = reader.ReadByte(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).fixedAge >= durationBeforeInterruptable) { return (InterruptPriority)1; } return (InterruptPriority)2; } } internal class M2Alt : BaseSkillState { public enum ComboState { Attack1, Attack2, Attack3, Attack4, Attack5 } private float damageCoefficient = 1.5f; private float stopwatch; private float first2attackDuration; private float last3attackDuration; private float attackDuration; private float earlyExitDuration; private Animator animator; private OverlapAttack overlapAttack; private bool hasSwung; private bool hasHit; internal ComboState comboState; private string slashChildName; private HitStopCachedState hitStopCachedState; public GameObject swingEffectPrefab = Prefabs.M1SwingEffect1; public GameObject hitEffectPrefab; private string attackSoundString; private float swingtimer; private bool hop; public override void OnEnter() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_055b: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_0507: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); hop = true; ((BaseState)this).StartAimMode(((BaseState)this).GetAimRay(), 3f, false); stopwatch = 0f; first2attackDuration = GroundLight.baseComboAttackDuration / 1.5f / ((BaseState)this).attackSpeedStat; last3attackDuration = GroundLight.baseComboAttackDuration / 2f / ((BaseState)this).attackSpeedStat; earlyExitDuration = GroundLight.baseEarlyExitDuration / 2f / ((BaseState)this).attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); bool @bool = animator.GetBool("isMoving"); bool bool2 = animator.GetBool("isGrounded"); swingtimer = 0f; animator.SetFloat("Swing", 0f); switch (comboState) { case ComboState.Attack1: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AltM2-1", "M2", first2attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AltM2-1", "M2", first2attackDuration / 2f, 0.05f); } attackDuration = first2attackDuration; hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "SwingMuzzle"; attackSoundString = GroundLight.comboAttackSoundString; break; case ComboState.Attack2: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient + 0.5f, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AltM2-2", "M2", first2attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AltM2-2", "M2", first2attackDuration / 2f, 0.05f); } attackDuration = first2attackDuration; hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = new Vector3(-1f, 1f, 1f); slashChildName = "SwingMuzzle"; attackSoundString = GroundLight.comboAttackSoundString; break; case ComboState.Attack3: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient + 1f, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AltM2-3", "M2", last3attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AltM2-3", "M2", last3attackDuration / 2f, 0.05f); } attackDuration = last3attackDuration; hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "SwingMuzzle"; attackSoundString = GroundLight.comboAttackSoundString; break; case ComboState.Attack4: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient + 1.5f, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing1"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AltM2-4", "M2", last3attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AltM2-4", "M2", last3attackDuration / 2f, 0.05f); } attackDuration = last3attackDuration; hitEffectPrefab = Prefabs.HitEffect; swingEffectPrefab.transform.localScale = new Vector3(-1f, 1f, 1f); slashChildName = "SwingMuzzle"; attackSoundString = GroundLight.comboAttackSoundString; break; case ComboState.Attack5: overlapAttack = ((BaseState)this).InitMeleeOverlap(damageCoefficient + 2f, hitEffectPrefab, ((EntityState)this).GetModelTransform(), "Swing2"); if (@bool || !bool2) { ((EntityState)this).PlayCrossfade("Gesture, Override", "AltM2-5", "M2", last3attackDuration / 2f, 0.05f); } else { ((EntityState)this).PlayCrossfade("FullBody, Override", "AltM2-5", "M2", last3attackDuration / 2f, 0.05f); } attackDuration = last3attackDuration; hitEffectPrefab = Prefabs.HitEffectStrong; swingEffectPrefab.transform.localScale = Vector3.one; slashChildName = "OverheadMuzzle"; attackSoundString = GroundLight.finisherAttackSoundString; break; } ((EntityState)this).characterBody.SetAimTimer(attackDuration + 1f); overlapAttack.hitEffectPrefab = hitEffectPrefab; overlapAttack.damageType = (DamageType)64; } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_012f: 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) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; swingtimer += Time.fixedDeltaTime; animator.SetFloat("Swing", swingtimer); if (((EntityState)this).isAuthority) { bool flag = ((BaseState)this).FireMeleeOverlap(overlapAttack, animator, "Swing", GroundLight.forceMagnitude, true); hasHit |= flag; if (flag && !((BaseState)this).isGrounded && hop) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 5f); hop = false; } } if (animator.GetFloat("Swing") > 0f && !hasSwung) { Util.PlayAttackSpeedSound("Play_Woodie_Swing", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); HealthComponent healthComponent = ((EntityState)this).characterBody.healthComponent; CharacterDirection component = ((Component)((EntityState)this).characterBody).GetComponent<CharacterDirection>(); if (Object.op_Implicit((Object)(object)healthComponent) && NetworkServer.active) { healthComponent.TakeDamageForce(GroundLight.selfForceMagnitude * component.forward, true, false); } hasSwung = true; EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, slashChildName, false); } stopwatch += Time.fixedDeltaTime; if (!((EntityState)this).isAuthority || !(stopwatch >= attackDuration - earlyExitDuration)) { return; } if (hasSwung || overlapAttack.Fire((List<HurtBox>)null)) { } if (!((EntityState)this).inputBank.skill1.down || comboState != ComboState.Attack5) { } if (stopwatch >= attackDuration) { if (comboState != ComboState.Attack5) { M2Alt m2Alt = new M2Alt(); m2Alt.comboState = comboState + 1; ((EntityState)this).outer.SetNextState((EntityState)(object)m2Alt); } else { ((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 override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write((byte)comboState); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); comboState = (ComboState)reader.ReadByte(); } } internal class M2Skill : BaseSkillState { public float baseDuration = 0.35f; public float maxNoHitTimer = 4f; private float duration; private bool hasFired; private string muzzleString; private GameObject muzzleflashEffectPrefab; private AxeThrowHitCallback hitCallback; public override void OnEnter() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); AkSoundEngine.PostEvent(Sounds.Play_Woodie_M2Throw, ((EntityState)this).gameObject); hasFired = false; hitCallback = ((EntityState)this).GetComponent<AxeThrowHitCallback>(); if (Object.op_Implicit((Object)(object)hitCallback)) { hitCallback.Hit = false; } duration = baseDuration / ((BaseState)this).attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).characterBody.isSprinting = false; ((BaseState)this).StartAimMode(aimRay, 2f, false); ((EntityState)this).characterBody.SetAimTimer(2f); muzzleflashEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashengigrenade"); ((EntityState)this).PlayAnimation("Gesture, Override", "M2", "M2", duration); EffectManager.SimpleMuzzleFlash(Prefabs.M2ThrowMuzzleFlashEffect, ((EntityState)this).gameObject, "HandR", false); } private void Fire() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a2: 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_00f0: 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_00fd: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) muzzleString = "LHand"; Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 position = default(Vector3); ((Vector3)(ref position))..ctor(((Ray)(ref aimRay)).origin.x, ((Ray)(ref aimRay)).origin.y + 1f, ((Ray)(ref aimRay)).origin.z); if (Object.op_Implicit((Object)(object)muzzleflashEffectPrefab)) { } Vector3 zero = Vector3.zero; Quaternion identity = Quaternion.identity; Quaternion rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (!Object.op_Implicit((Object)(object)component)) { } } FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * 4.6f; val.damageColorIndex = (DamageColorIndex)0; val.force = 98f; val.owner = ((EntityState)this).gameObject; val.position = position; val.procChainMask = default(ProcChainMask); val.projectilePrefab = Prefabs.M2Projectile; val.rotation = rotation; val.useFuseOverride = false; val.useSpeedOverride = true; ((FireProjectileInfo)(ref val)).speedOverride = 120f * ((BaseState)this).attackSpeedStat; val.target = null; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)hitCallback) && ((EntityState)this).isAuthority && hitCallback.Hit) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).fixedAge >= maxNoHitTimer && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).fixedAge >= 0.2f && ((EntityState)this).isAuthority && !hasFired) { Fire(); ((Component)((EntityState)this).GetModelChildLocator().FindChild("Axe")).gameObject.SetActive(false); ((Component)((EntityState)this).GetModelChildLocator().FindChild("AxeOutline")).gameObject.SetActive(false); hasFired = true; } if (((EntityState)this).fixedAge >= duration && !((EntityState)this).isAuthority) { } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).PlayAnimation("Gesture, Override", "M2_Retrieve", "M2", duration); ((Component)((EntityState)this).GetModelChildLocator().FindChild("Axe")).gameObject.SetActive(true); ((Component)((EntityState)this).GetModelChildLocator().FindChild("AxeOutline")).gameObject.SetActive(true); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class NewM1 : BaseSkillState { public float baseDuration = 0.35f; private float duration; private bool hasFired; private GameObject muzzleflashEffectPrefab; private WoodieBehaviour behaviour; private GameObject target; public override void OnEnter() { //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<WoodieBehaviour>(); behaviour.canExecute = false; if (!behaviour.target) { ((EntityState)this).outer.SetNextStateToMain(); return; } target = ((Component)((HuntressTracker)behaviour).GetTrackingTarget().healthComponent).gameObject; AkSoundEngine.PostEvent(Sounds.Play_Woodie_M2Throw, ((EntityState)this).gameObject); Prefabs.M2Projectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 120f * ((BaseState)this).attackSpeedStat; duration = baseDuration / ((BaseState)this).attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).characterBody.isSprinting = false; ((BaseState)this).StartAimMode(aimRay, 2f, false); ((EntityState)this).characterBody.SetAimTimer(2f); muzzleflashEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashengigrenade"); ((EntityState)this).PlayAnimation("Gesture, Override", "RangedM1", "M1", duration); EffectManager.SimpleMuzzleFlash(Prefabs.M2ThrowMuzzleFlashEffect, ((EntityState)this).gameObject, "HandR", false); } private void Fire() { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 position = default(Vector3); ((Vector3)(ref position))..ctor(((Ray)(ref aimRay)).origin.x, ((Ray)(ref aimRay)).origin.y + 1f, ((Ray)(ref aimRay)).origin.z); Quaternion rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = ((EntityState)this).characterBody.damage * 1.7f; val.damageColorIndex = (DamageColorIndex)0; val.damageTypeOverride = (DamageType)0; val.force = 98f; val.owner = ((EntityState)this).gameObject; val.position = position; val.procChainMask = default(ProcChainMask); val.projectilePrefab = Prefabs.M2ProjectileHoming; val.rotation = rotation; val.useFuseOverride = false; val.useSpeedOverride = false; val.target = target; FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.2f / ((BaseState)this).attackSpeedStat && !hasFired) { hasFired = true; if (((EntityState)this).isAuthority) { Fire(); } ((Component)((EntityState)this).GetModelChildLocator().FindChild("Axe")).gameObject.SetActive(false); ((Component)((EntityState)this).GetModelChildLocator().FindChild("AxeOutline")).gameObject.SetActive(false); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new NewM1End()); } } public override void OnExit() { ((EntityState)this).OnExit(); behaviour.canExecute = true; ((EntityState)this).PlayAnimation("Gesture, Override", "M2_Retrieve", "M2", duration); ((Component)((EntityState)this).GetModelChildLocator().FindChild("Axe")).gameObject.SetActive(true); ((Component)((EntityState)this).GetModelChildLocator().FindChild("AxeOutline")).gameObject.SetActive(true); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class NewM1End : BaseSkillState { public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.25f / ((BaseState)this).attackSpeedStat && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class NewM2Charge : BaseSkillState { private WoodieBehaviour behaviour; private bool played; public override void OnEnter() { ((BaseState)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<WoodieBehaviour>(); behaviour.canExecute = false; behaviour.changeMat = true; ((EntityState)this).GetModelAnimator().SetBool("M2Over", false); ((EntityState)this).PlayAnimation("Gesture, Override", "Charge"); } public override void FixedUpdate() { //IL_0072: 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) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.08f && !played) { played = true; behaviour.ID = AkSoundEngine.PostEvent(Sounds.Play_Woodie_Charge, ((EntityState)this).gameObject); } if (Object.op_Implicit((Object)(object)behaviour)) { if (behaviour.target) { float num = Vector3.Distance(((EntityState)this).transform.position, ((Component)((HuntressTracker)behaviour).trackingTarget).transform.position); if (num >= 58f && ((EntityState)this).isAuthority) { Debug.LogError((object)num); ((EntityState)this).outer.SetNextState((EntityState)(object)new NewM2Throw()); return; } } if (((EntityState)this).fixedAge >= 0.5f / ((BaseState)this).attackSpeedStat) { behaviour.charge1 = true; } if (((EntityState)this).fixedAge >= 1f / ((BaseState)this).attackSpeedStat) { behaviour.enableTracker2 = true; } if (((EntityState)this).fixedAge >= 1.5f / ((BaseState)this).attackSpeedStat) { behaviour.enableTracker3 = true; } } if (((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill2.down) { ((EntityState)this).outer.SetNextState((EntityState)(object)new NewM2Throw()); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class NewM2Throw : BaseSkillState { private float duration = 0.35f; private bool hasFired; private GameObject muzzleflashEffectPrefab; private WoodieBehaviour behaviour; private HurtBox target; private HurtBox target2; private HurtBox target3; private float targets = 0f; private float damageCoefficient = 2f; private Animator animator; private GameObject axe; private GameObject axeOutline; public override void OnEnter() { //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<WoodieBehaviour>(); AkSoundEngine.StopPlayingID(behaviour.ID); animator = ((EntityState)this).GetModelAnimator(); animator.SetBool("M2Over", true); ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); axe = ((Component)modelChildLocator.FindChild("Axe")).gameObject; axeOutline = ((Component)modelChildLocator.FindChild("AxeOutline")).gameObject; if (behaviour.target) { target = ((HuntressTracker)behaviour).trackingTarget; targets += 0.7f; } else { behaviour.ResetMat(); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } } if (behaviour.enableTracker2 && Object.op_Implicit((Object)(object)behaviour.target2)) { target2 = behaviour.target2; damageCoefficient = 3.5f; targets += 0.7f; } if (behaviour.enableTracker3 && Object.op_Implicit((Object)(object)behaviour.target3)) { target3 = behaviour.target3; damageCoefficient = 5f; targets += 0.7f; } behaviour.canExecute = false; AkSoundEngine.PostEvent(Sounds.Play_Woodie_M2Throw, ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).characterBody.isSprinting = false; ((BaseState)this).StartAimMode(aimRay, 2f, false); ((EntityState)this).characterBody.SetAimTimer(2f); muzzleflashEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashengigrenade"); EffectManager.SimpleMuzzleFlash(Prefabs.M2ThrowMuzzleFlashEffect, ((EntityState)this).gameObject, "HandR", false); } private void Fire() { //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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_00b6: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)target) && NetworkServer.active) { WoodieAxeOrb woodieAxeOrb = new WoodieAxeOrb(); ((Orb)woodieAxeOrb).origin = ((BaseState)this).FindModelChild("HandR").position; woodieAxeOrb.damageValue = ((EntityState)this).characterBody.damage * damageCoefficient; woodieAxeOrb.isCrit = ((BaseState)this).RollCrit(); woodieAxeOrb.bouncesRemaining = 2; woodieAxeOrb.teamIndex = ((EntityState)this).teamComponent.teamIndex; woodieAxeOrb.attacker = ((EntityState)this).gameObject; woodieAxeOrb.bouncedObjects = new List<HealthComponent>(); woodieAxeOrb.procChainMask = default(ProcChainMask); woodieAxeOrb.procCoefficient = 0.2f; woodieAxeOrb.damageColorIndex = (DamageColorIndex)0; woodieAxeOrb.damageType = (DamageType)64; woodieAxeOrb.range = 20f; ((Orb)woodieAxeOrb).target = target; woodieAxeOrb.target2 = target2; woodieAxeOrb.target3 = target3; OrbManager.instance.AddOrb((Orb)(object)woodieAxeOrb); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.2f && !hasFired) { hasFired = true; Fire(); behaviour.ResetMat(); axe.SetActive(false); axeOutline.SetActive(false); } if (((EntityState)this).fixedAge >= duration + targets / 2f && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); behaviour.canExecute = true; axe.SetActive(true); axeOutline.SetActive(true); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } internal class NewUtil : BaseSkillState { private float duration = 0.65f; private bool spawn = true; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("FullBody, Override", "Bonfire", "Utility", duration); } public override void FixedUpdate() { //IL_0046: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration * 0.35f && spawn) { spawn = false; if (NetworkServer.active) { GameObject val = Object.Instantiate<GameObject>(Prefabs.bonfire, ((EntityState)this).transform.position + ((EntityState)this).characterDirection.forward * 3f, Quaternion.identity, (Transform)null); val.GetComponent<TeamFilter>().teamIndex = ((EntityState)this).teamComponent.teamIndex; NetworkServer.Spawn(val); } } 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)2; } } internal class SpecialSkill : BaseSkillState { private float duration = 3f; private GameObject hitEffectPrefab = Prefabs.HitEffect; private Animator animator; private HitBoxGroup hitBoxGroup; private float fireTimer; private float fireFrequency = 0.85f; private float hitPauseDuration = 0.1f; private float moveSpeedBonusCoefficient = 10f; protected float hitPauseTimer = 0.5f; protected bool isInHitPause; protected HitStopCachedState hitStopCachedState; private GameObject spinEffect; public override void OnEnter() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(); Ray aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).characterBody.SetAimTimer(4f); animator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)animator)) { animator.SetBool("SpecialOver", false); animator.SetFloat("Special", 1f); } if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelTransform())) { hitBoxGroup = Array.Find(((Component)((EntityState)this).GetModelTransform()).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Spin"); } ((EntityState)this).PlayAnimation("FullBody, Override", "Special"); spinEffect = Object.Instantiate<GameObject>(Prefabs.SpinEffect, ((BaseState)this).FindModelChild("CenterMuzzle")); spinEffect.transform.localPosition = Vector3.zero; } private void Attack() { //IL_0024: 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) Util.PlayAttackSpeedSound("Play_Woodie_Swing", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); if (!NewOverlapAttack().Fire((List<HurtBox>)null)) { } } } private OverlapAttack NewOverlapAttack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) OverlapAttack val = new OverlapAttack(); val.procChainMask = default(ProcChainMask); val.procCoefficient = 1f; val.attacker = ((EntityState)this).gameObject; val.inflictor = ((EntityState)this).gameObject; val.teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex; val.damage = ((EntityState)this).characterBody.damage * 0.78f; val.forceVector = new Vector3(40f, 40f, 40f) * ((EntityState)this).characterBody.attackSpeed; val.hitEffectPrefab = hitEffectPrefab; val.isCrit = ((EntityState)this).characterBody.RollCrit(); val.damageColorIndex = (DamageColorIndex)0; val.damageType = (DamageType)64; val.maximumOverlapTargets = 9999999; val.hitBoxGroup = hitBoxGroup; return val; } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)spinEffect)) { EntityState.Destroy((Object)(object)spinEffect); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); animator.SetFloat("Special", 1f * ((BaseState)this).attackSpeedStat); fireTimer += Time.fixedDeltaTime; float num = fireFrequency * ((EntityState)this).characterBody.attackSpeed; float num2 = 0.15f / num; if (fireTimer > num2) { Attack(); fireTimer = 0f; } if (((EntityState)this).fixedAge >= duration) { if (Object.op_Implicit((Object)(object)animator)) { animator.SetBool("SpecialOver", true); } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } if (((EntityState)this).fixedAge >= 0.4f && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && (((EntityState)this).inputBank.skill1.down || ((EntityState)this).inputBank.skill4.down)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new SpecialFinisher()); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class SpecialFinisher : BaseSkillState { private float duration = 0.35f; protected Quaternion slideRotation; private HitBoxGroup hitBoxGroup; private GameObject hitEffectP