Decompiled source of Amp v2.1.2
plugins/AmpMod.dll
Decompiled 5 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; 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.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AmpMod.Modules; using AmpMod.Modules.Survivors; using AmpMod.SkillStates; using AmpMod.SkillStates.Amp; using AmpMod.SkillStates.Amp.BaseStates; using AmpMod.SkillStates.BaseStates; using AmpMod.SkillStates.Nemesis_Amp; using AmpMod.SkillStates.Nemesis_Amp.Components; using AmpMod.SkillStates.Nemesis_Amp.Orbs; using AmpMod.SkillStates.SkillComponents; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.BrotherMonster.Weapon; using EntityStates.Huntress; using EntityStates.Mage; using EntityStates.Mage.Weapon; using EntityStates.MagmaWorm; using HG; using HG.Reflection; using IL.RoR2; using JetBrains.Annotations; using KinematicCharacterController; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using On.RoR2.CharacterSpeech; using On.RoR2.Stats; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterSpeech; using RoR2.ContentManagement; using RoR2.HudOverlay; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.Stats; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; using UnityEngine.SceneManagement; using UnityEngine.Serialization; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("AmpMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("AmpMod")] [assembly: AssemblyTitle("AmpMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: UnverifiableCode] internal class BodyInfo { internal string bodyName = ""; internal string bodyNameToken = ""; internal string subtitleNameToken = ""; internal string bodyNameToClone = "Commando"; internal Texture characterPortrait = null; internal GameObject crosshair = null; internal GameObject podPrefab = null; internal float maxHealth = 100f; internal float healthGrowth = 2f; internal float healthRegen = 0f; internal float shield = 0f; internal float shieldGrowth = 0f; internal float moveSpeed = 7f; internal float moveSpeedGrowth = 0f; internal float acceleration = 80f; internal float jumpPower = 15f; internal float jumpPowerGrowth = 0f; internal float damage = 12f; internal float attackSpeed = 1f; internal float attackSpeedGrowth = 0f; internal float armor = 0f; internal float armorGrowth = 0f; internal float crit = 1f; internal float critGrowth = 0f; internal int jumpCount = 1; internal Color bodyColor = Color.grey; internal Vector3 aimOriginPosition = new Vector3(0f, 1.8f, 0f); internal Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f); internal Vector3 cameraPivotPosition = new Vector3(0f, 1.6f, 0f); } internal class CustomRendererInfo { internal string childName; internal Material material; internal bool ignoreOverlays; } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public Sprite skillIcon; public SerializableEntityStateType activationState; public string activationStateMachineName; public int baseMaxStock; public float baseRechargeInterval; public bool beginSkillCooldownOnSkillEnd; public bool canceledFromSprinting; public bool forceSprintDuringState; public bool fullRestockOnAssign; public InterruptPriority interruptPriority; public bool resetCooldownTimerOnUse; public bool isCombatSkill; public bool mustKeyPress; public bool cancelSprintingOnActivation; public int rechargeStock; public int requiredStock; public int stockToConsume; public string[] keywordTokens; } namespace AmpMod.SkillStates { internal class AltPulseLeap : BaseSkillState { private BlastAttack boostBlast; private string launchSound = "PlayBoltExit"; private float launchDamage = 2.5f; private GameObject launchEffect; private ChildLocator childLocator; private float smallHopVelocity = 12f; private AmpLightningController lightningController; private Vector3 lungeVelocity; private Vector3 initialLaunchVelocity; private float blastRadius = 11f; private float flyDuration = 0.15f; private float exitAnimDuration = 0.65f; private float exitDuration = 1.2f; private Transform modelTransform; private bool hasResetRot; private bool hasFlown; private float speedCoefficient = 20f; private bool hasFired = false; public static AnimationCurve speedCoefficientCurve = FlyUpState.speedCoefficientCurve; private Vector3 aimDirection; private Transform leftMuzzleTransform; private Transform swordTipTransform; private bool isFlying; private Animator animator; private Vector3 flyDirection; private float upSpeed; private Transform inputSpace; private GameObject muzzlePrefab; private Rotator rotator; private GameObject blinkPrefab; private float lungeSpeed = 40f; public override void OnEnter() { //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: 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_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); lightningController = ((EntityState)this).GetComponent<AmpLightningController>(); blinkPrefab = lightningController.pulseLeapEffect; muzzlePrefab = lightningController.pulseMuzzleEffect; if (((EntityState)this).isAuthority) { FireLaunchBlast(); modelTransform = ((EntityState)this).GetModelTransform(); animator = ((EntityState)this).GetModelAnimator(); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); if (!Object.op_Implicit((Object)(object)childLocator)) { Debug.Log((object)"No ChildLocator found"); } if (Object.op_Implicit((Object)(object)modelTransform) && Object.op_Implicit((Object)(object)childLocator)) { Transform val = childLocator.FindChild("HandL"); Transform val2 = childLocator.FindChild("SwordTip"); leftMuzzleTransform = Object.Instantiate<GameObject>(muzzlePrefab, val).transform; swordTipTransform = Object.Instantiate<GameObject>(muzzlePrefab, val2).transform; } ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(); ((EntityState)this).characterMotor.disableAirControlUntilCollision = true; CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); inputSpace = new GameObject("inputSpace").transform; inputSpace.position = Vector3.zero; inputSpace.rotation = Quaternion.identity; inputSpace.localScale = Vector3.one; upSpeed = animator.GetFloat("upSpeed"); animator.SetBool("isFlying", true); rotator = ((Component)modelTransform.Find("metarig")).GetComponent<Rotator>(); if (!Object.op_Implicit((Object)(object)rotator)) { rotator = ((Component)modelTransform.Find("metarig")).gameObject.AddComponent<Rotator>(); } rotator.ResetRotation(0f); Ray aimRay = ((BaseState)this).GetAimRay(); aimDirection = ((Ray)(ref aimRay)).direction; rotator.SetRotation(Quaternion.LookRotation(CreateForwardRotation(), Vector3.up), flyDuration); ((EntityState)this).PlayAnimation("FullBody, Override", "PulseLeap", "BaseSkill.playbackRate", flyDuration); } Transform val3 = ((EntityState)this).GetModelTransform(); childLocator = ((Component)val3).GetComponent<ChildLocator>(); Util.PlaySound(launchSound, ((EntityState)this).gameObject); } public void AltHandleMovements(Vector3 flyVector) { //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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += flyVector * (((BaseState)this).moveSpeedStat * speedCoefficient * Time.fixedDeltaTime); } public static Vector3 CalculateLungeVelocity(Vector3 currentVelocity, Vector3 aimDirection, float lungeSpeed) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: 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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) currentVelocity = ((Vector3.Dot(currentVelocity, aimDirection) < 0f) ? Vector3.zero : Vector3.Project(currentVelocity, aimDirection)); return currentVelocity + aimDirection * lungeSpeed; } public void FireLaunchBlast() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown //IL_00d2: 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) if (((EntityState)this).isAuthority) { boostBlast = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = launchDamage * ((EntityState)this).characterBody.damage, baseForce = 0f, attackerFiltering = (AttackerFiltering)2, crit = ((EntityState)this).characterBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)0, falloffModel = (FalloffModel)0, inflictor = ((EntityState)this).gameObject, position = ((EntityState)this).transform.position, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = blastRadius, teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex }; DamageAPI.AddModdedDamageType(boostBlast, DamageTypes.applyCharge); boostBlast.Fire(); } } private void CreateBlinkEffect(Vector3 origin) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0009: 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) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) EffectData val = new EffectData(); val.rotation = Util.QuaternionSafeLookRotation(aimDirection); val.origin = origin; val.scale = 0.3f; EffectManager.SpawnEffect(blinkPrefab, val, false); } private Vector3 CreateForwardRotation() { //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_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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_006c: 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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; Vector3 moveVector = ((EntityState)this).inputBank.moveVector; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(direction.x, 0f, direction.z); val = Vector3.Normalize(val); inputSpace.rotation = Quaternion.LookRotation(val, Vector3.up); direction = inputSpace.InverseTransformDirection(direction); moveVector = inputSpace.InverseTransformDirection(moveVector); Vector3 val2 = direction; val2.y += (((EntityState)this).inputBank.jump.down ? 2f : 0f); val2 = Vector3.Normalize(val2); return inputSpace.TransformDirection(val2); } public override void FixedUpdate() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !hasFired) { hasFired = true; ((EntityState)this).characterMotor.velocity = Vector3.zero; ((BaseState)this).SmallHop(((EntityState)this).characterMotor, smallHopVelocity); } if (((EntityState)this).fixedAge <= flyDuration) { AltHandleMovements(aimDirection); } } if (((EntityState)this).fixedAge >= flyDuration && NetworkServer.active && !((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1)) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); ((EntityState)this).characterMotor.onHitGroundServer += new HitGroundDelegate(CharacterMotor_onHitGround); } if (((EntityState)this).isAuthority && ((((EntityState)this).fixedAge >= flyDuration) & !hasFlown)) { if (Object.op_Implicit((Object)(object)inputSpace)) { Object.Destroy((Object)(object)((Component)inputSpace).gameObject); } ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; rotator.ResetRotation(0.3f); hasResetRot = true; ((EntityState)this).characterMotor.velocity.y = 0f; ((EntityState)this).PlayAnimation("FullBody, Override", "PulseExit", "BaseSkill.playbackRate", exitAnimDuration); hasFlown = true; animator.SetBool("isMoving", false); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= flyDuration + exitDuration && hasFlown) { ((EntityState)this).outer.SetNextStateToMain(); } } private void CharacterMotor_onHitGround(ref HitGroundInfo hitGroundInfo) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1)) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } ((EntityState)this).characterMotor.onHitGroundServer -= new HitGroundDelegate(CharacterMotor_onHitGround); } public override void OnExit() { ((EntityState)this).OnExit(); if (!((EntityState)this).isAuthority) { return; } if (!hasResetRot) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; } if (Object.op_Implicit((Object)(object)rotator)) { rotator.ResetRotation(0.5f); } hasResetRot = true; ((EntityState)this).PlayAnimation("FullBody, Override", "PulseExit", "BaseSkill.playbackRate", exitAnimDuration); animator.SetBool("isMoving", false); } animator.SetBool("isFlying", false); } } public abstract class BaseChannelWurm : BaseSkillState { private ChildLocator childLocator; private Animator animator; private float baseChannelDuration = 3f; private float channelDuration; private bool hasBegunChannelling; private bool hasChannelled; private string chargeSoundString = "PlayWormCharge"; private uint stopChargeID; protected abstract SummonWurm GetNextState(); public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); animator.SetBool("IsChannelling", true); channelDuration = baseChannelDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Worm, Override", "WormChannelStart", "LorentzCannon.Playbackrate", 1.4f); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.Slow50); } stopChargeID = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (animator.GetBool("attacking")) { ((EntityState)this).outer.SetNextStateToMain(); } if (!hasBegunChannelling) { hasBegunChannelling = true; ((EntityState)this).PlayAnimation("Worm, Override", "WormChannel", "LorentzCannon.Playbackrate", baseChannelDuration); } if (((ButtonState)(ref ((EntityState)this).inputBank.skill1)).justPressed && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } if (((EntityState)this).fixedAge >= channelDuration && ((EntityState)this).isAuthority) { SummonWurm nextState = GetNextState(); animator.SetBool("HasChannelled", true); ((EntityState)this).outer.SetNextState((EntityState)(object)nextState); hasBegunChannelling = false; hasChannelled = true; } } public override void OnExit() { ((EntityState)this).OnExit(); animator.SetBool("IsChannelling", false); AkSoundEngine.StopPlayingID(stopChargeID, 0); if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50); } if (!hasChannelled) { RefundCooldown(); } } private void RefundCooldown() { ((BaseSkillState)this).activatorSkillSlot.rechargeStopwatch = 0.9f * ((BaseSkillState)this).activatorSkillSlot.finalRechargeInterval; } 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)0; } } internal class CancelSkill : BaseSkillState { public override void OnEnter() { ((BaseState)this).OnEnter(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { } } } internal class CancelWurm : BaseSkillState { private GenericSkill specialSlot; public static SkillDef cancelSkillDef; public override void OnEnter() { ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)SummonWurm.wormMaster)) { SummonWurm.wormMaster.TrueKill(); } } public override void OnExit() { ((EntityState)this).OnExit(); cancelSkillDef = SummonWurm.cancelSkillDef; specialSlot = ((EntityState)this).skillLocator.special; if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef)) { specialSlot.UnsetSkillOverride(SummonWurm.src, cancelSkillDef, (SkillOverridePriority)4); } Debug.Log((object)"Exiting"); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); ((EntityState)this).outer.SetNextStateToMain(); } } public class ChannelWurm : BaseChannelWurm { public override void OnEnter() { base.OnEnter(); } protected override SummonWurm GetNextState() { return new SummonWurm(); } public override void FixedUpdate() { base.FixedUpdate(); } public override void OnExit() { base.OnExit(); } } public class Ferroshot : BaseSkillState { public static float damageCoefficient = 1.4f; public static float procCoefficient = 1f; public static float baseDuration = 1f; public static float force = 10f; public static float recoil = 0f; private AmpLightningController lightningController; public static float range = 600f; private GameObject bulletPrefab; public static float launchForce = 150f; private static int numOfBullets = 6; private const float FIRE_TIME_PERCENTAGE = 0.25f; private string launchString = "PlayFerroshotLaunchAlter"; private string prepString = "PlayFerroshotCreateAlter"; private uint stopPrepID; private Animator animator; private ChildLocator childLocator; private Transform leftMuzzleTransform; public static GameObject ferroshotPrefabBasic = Assets.bulletPrepItem; private float totalDuration; private float fireDuration; private float chargeDuration; private bool hasFired; private float distanceFromHead = 0.5f; private GameObject[] bullets = (GameObject[])(object)new GameObject[numOfBullets]; private bool hasMuzzleEffect; private GameObject muzzleEffectPrefab = Assets.ampBulletMuzzleEffect; private Transform fireMuzzleTransform; public override void OnEnter() { //IL_006e: 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) ((BaseState)this).OnEnter(); totalDuration = baseDuration / ((BaseState)this).attackSpeedStat; fireDuration = 0.25f * totalDuration; chargeDuration = totalDuration - fireDuration; ((EntityState)this).characterBody.SetAimTimer(2f); lightningController = ((EntityState)this).GetComponent<AmpLightningController>(); bulletPrefab = lightningController.lorentzProjectile; Ray aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).PlayAnimation("Worm, Override", "ShootProjectile", "LorentzCannon.playbackRate", 1.2f * totalDuration); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); leftMuzzleTransform = childLocator.FindChild("LowerArmL"); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)fireMuzzleTransform)) { EntityState.Destroy((Object)(object)((Component)fireMuzzleTransform).gameObject); } ((EntityState)this).OnExit(); } private Vector3 getLoc(float yDir, float angle) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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) float num = Mathf.Cos(yDir) * Mathf.Cos(angle); float num2 = Mathf.Sin(angle); float num3 = (0f - Mathf.Sin(yDir)) * Mathf.Cos(angle); return new Vector3(num, num2, num3) * distanceFromHead; } private void updateRotAndLoc() { //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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_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) Ray aimRay = ((BaseState)this).GetAimRay(); float num = MathF.PI / (float)(numOfBullets - 1); for (int i = 0; i < numOfBullets; i++) { if ((Object)(object)bullets[i] != (Object)null) { bullets[i].transform.position = ((Ray)(ref aimRay)).origin + getLoc(((EntityState)this).modelLocator.modelTransform.eulerAngles.y * (MathF.PI / 180f), num * (float)i); bullets[i].transform.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); } } } private IEnumerator Fire() { hasFired = true; if (!((EntityState)this).isAuthority) { yield break; } float angle = MathF.PI / (float)(numOfBullets - 1); Ray aimRay; for (int j = 0; j < numOfBullets; j++) { aimRay = ((BaseState)this).GetAimRay(); stopPrepID = Util.PlaySound(prepString, ((EntityState)this).gameObject); bullets[j] = Object.Instantiate<GameObject>(ferroshotPrefabBasic, ((Ray)(ref aimRay)).origin + getLoc(((EntityState)this).modelLocator.modelTransform.eulerAngles.y * (MathF.PI / 180f), angle * (float)j), Quaternion.LookRotation(((Ray)(ref aimRay)).direction)); bullets[j].transform.parent = ((EntityState)this).characterBody.transform; yield return (object)new WaitForSeconds((totalDuration - fireDuration) / (float)numOfBullets); } aimRay = ((BaseState)this).GetAimRay(); RaycastHit hit = default(RaycastHit); bool somethingHit = Physics.Raycast(((Ray)(ref aimRay)).origin, ((Ray)(ref aimRay)).direction, ref hit); for (int i = 0; i < numOfBullets; i++) { Vector3 direction; if (somethingHit && ((RaycastHit)(ref hit)).distance > 2.5f) { Vector3 val = ((RaycastHit)(ref hit)).point - bullets[i].transform.position; direction = ((Vector3)(ref val)).normalized; } else { direction = ((Ray)(ref aimRay)).direction; } ProjectileManager.instance.FireProjectile(bulletPrefab, bullets[i].transform.position, Quaternion.LookRotation(direction), ((EntityState)this).gameObject, damageCoefficient * ((BaseState)this).damageStat, launchForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, launchForce); Util.PlaySound(launchString, ((EntityState)this).gameObject); EntityState.Destroy((Object)(object)bullets[i]); yield return (object)new WaitForSeconds(fireDuration / (float)numOfBullets); } AkSoundEngine.StopPlayingID(stopPrepID); hit = default(RaycastHit); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!hasMuzzleEffect) { hasMuzzleEffect = true; if (!Object.op_Implicit((Object)(object)childLocator)) { } } if (((EntityState)this).fixedAge < totalDuration) { if (!hasFired) { ((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(Fire()); } updateRotAndLoc(); } else if (((EntityState)this).fixedAge >= totalDuration && ((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; } } public class Fulmination : BaseSkillState { [Header("Effect/Animation Variables")] public GameObject lightningEffectPrefab; public static GameObject impactEffectPrefab; public EffectData fulminationData; private AmpLightningController lightningController; private Transform fulminationTransform; private Transform muzzleTransform; private Transform handLTransform; private ChildLocator childLocator; private bool hasMuzzleEffect; private Animator animator; [Header("Attack Variables")] public static float radius = 1f; public static float basetickFrequency = 6f; public static float tickFrequency; public static float force = 20f; private float tickDamageCoefficient; public static float procCoefficientPerTick; public static float totalDamageCoefficient = 16f; public static float minimumDuration = 1f; public static float baseticktotal; [Header("Sounds")] public string enterSoundString = "PlayFulminationEnter"; public string attackSoundString = "PlayFulminationState"; public string endSoundString = "PlayFulminationExitAlter"; public uint stopSoundID; [Header("Duration/Timer Variables")] public static float delayTime = 0.2f; public static float baseEntryDuration = 0.5f; public static float baseFulminationDuration = 3f; private float fulminationStopwatch; private float stopwatch; public float entryDuration; private float fulminationDuration; private bool hasBegunFulmination; private GenericSkill specialSlot; public static SkillDef cancelSkillDef; private string prefix = "NT"; public override void OnEnter() { ((BaseState)this).OnEnter(); lightningController = ((EntityState)this).GetComponent<AmpLightningController>(); lightningEffectPrefab = lightningController.fulminationEffect; impactEffectPrefab = lightningController.fulminationHitEffect; stopwatch = 0f; entryDuration = baseEntryDuration / ((BaseState)this).attackSpeedStat; fulminationDuration = baseFulminationDuration; Transform modelTransform = ((EntityState)this).GetModelTransform(); animator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(entryDuration + fulminationDuration + 1f); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); handLTransform = childLocator.FindChild("HandL"); } Util.PlaySound("PlayFulminationEnter", ((EntityState)this).gameObject); tickFrequency = basetickFrequency * ((BaseState)this).attackSpeedStat; baseticktotal = Mathf.CeilToInt(basetickFrequency * fulminationDuration); tickDamageCoefficient = totalDamageCoefficient / baseticktotal; animator.SetBool("isUsingIndependentSkill", true); ((EntityState)this).PlayAnimation("Fulminate, Override", "FulminateStart", "BaseSkill.playbackRate", entryDuration); animator.SetBool("isFulminating", true); cancelSkillDef = Skills.fulminationCancelSkillDef; specialSlot = ((EntityState)this).skillLocator.special; if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef)) { specialSlot.SetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4); } } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)specialSlot) && Object.op_Implicit((Object)(object)cancelSkillDef)) { specialSlot.UnsetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4); } Util.PlaySound(endSoundString, ((EntityState)this).gameObject); AkSoundEngine.StopPlayingID(stopSoundID, 0); if (Object.op_Implicit((Object)(object)fulminationTransform)) { EntityState.Destroy((Object)(object)((Component)fulminationTransform).gameObject); } animator.SetBool("isFulminating", false); animator.SetBool("isUsingIndependentSkill", false); ((EntityState)this).PlayCrossfade("Fulminate, Override", "FulminateEnd", 0.1f); } private void FireLightning(string muzzleString) { //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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00c1: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { BulletAttack val = new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, damage = tickDamageCoefficient * ((EntityState)this).characterBody.damage, force = 2f, muzzleName = muzzleString, hitEffectPrefab = impactEffectPrefab, isCrit = ((EntityState)this).characterBody.RollCrit(), radius = radius, falloffModel = (FalloffModel)0, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, procCoefficient = 1f, maxDistance = 20f, smartCollision = true, damageType = (DamageType)0 }; DamageAPI.AddModdedDamageType(val, DamageTypes.fulminationChain); if (Util.CheckRoll(15f, ((EntityState)this).characterBody.master)) { DamageAPI.AddModdedDamageType(val, DamageTypes.applyCharge); } val.Fire(); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= entryDuration && !hasBegunFulmination) { hasBegunFulmination = true; animator.SetBool("isUsingIndependentSkill", false); if (Object.op_Implicit((Object)(object)childLocator)) { Transform val = childLocator.FindChild("HandL"); if (Object.op_Implicit((Object)(object)val)) { fulminationTransform = Object.Instantiate<GameObject>(lightningEffectPrefab, val).transform; } } stopSoundID = Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); FireLightning("HandL"); } if (hasBegunFulmination) { fulminationStopwatch += Time.deltaTime; if (fulminationStopwatch > 1f / tickFrequency) { fulminationStopwatch -= 1f / tickFrequency; FireLightning("HandL"); } UpdateFulminationEffect(); } if (stopwatch >= fulminationDuration + entryDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void UpdateFulminationEffect() { //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_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; if (Object.op_Implicit((Object)(object)fulminationTransform)) { fulminationTransform.forward = direction; } } } internal class PlasmaSlash : BaseSkillState { private float baseTotalDuration = 0.75f; private float baseChargeDuration = 0.5f; protected string hitboxName = "SpinSlash"; private float chargeDuration; private float totalDuration; public OverlapAttack attack; protected DamageType damageType = (DamageType)0; protected float damageCoefficient = 7f; protected float procCoefficient = 1f; protected GameObject swingEffectPrefab = Assets.heatSwing; protected GameObject hitEffectPrefab = Assets.heatHit; protected float stopwatch; private ChildLocator childLocator; protected Animator animator; private bool hasMuzzleEffect; private GameObject muzzleEffectPrefab = Assets.plasmaMuzzle; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected NetworkSoundEventIndex impactSound = Assets.heatShockHitSoundEvent.index; private bool hasFired = false; private string chargeSoundString = "PlayHeatShockCharge"; public uint stopChargeSound; protected string swingSoundString = "PlayHeatShockSwing"; private string muzzleString = "HeatSwing"; private bool inGroundedState; private Transform swordMuzzle; public static float shortHopVelocity; private GameObject fireBeamPrefab = Projectiles.fireBeamPrefab; private float fireBeamDamage = 5f; public override void OnEnter() { //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); chargeDuration = baseChargeDuration / ((BaseState)this).attackSpeedStat; totalDuration = baseTotalDuration / ((BaseState)this).attackSpeedStat; animator.SetBool("isUsingIndependentSkill", true); hasMuzzleEffect = false; ((EntityState)this).characterBody.SetAimTimer(totalDuration); HitBoxGroup hitBoxGroup = null; Transform modelTransform = ((EntityState)this).GetModelTransform(); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)modelTransform)) { hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); swordMuzzle = childLocator.FindChild("SwordPlace"); } if (((BaseState)this).isGrounded) { inGroundedState = true; ((EntityState)this).PlayAnimation("FullBody, Override", "SpinningSlash", "BaseSkill.playbackRate", totalDuration); stopChargeSound = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject); attack = new OverlapAttack(); attack.damageType = damageType; attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * ((EntityState)this).characterBody.damage; attack.procCoefficient = procCoefficient; attack.hitEffectPrefab = hitEffectPrefab; attack.forceVector = bonusForce; attack.pushAwayForce = pushForce; attack.hitBoxGroup = hitBoxGroup; attack.isCrit = ((BaseState)this).RollCrit(); attack.impactSound = impactSound; DamageAPI.AddModdedDamageType(attack, DamageTypes.strongBurnIfCharged); } else if (!((BaseState)this).isGrounded) { stopChargeSound = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject); inGroundedState = false; ((EntityState)this).PlayAnimation("FullBody, Override", "SpinningSlash", "BaseSkill.playbackRate", totalDuration); } } protected virtual void ModifyProjectile(ref FireProjectileInfo projectileInfo) { } private void FireAerialAttack() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); AkSoundEngine.StopPlayingID(stopChargeSound, 0); if (Object.op_Implicit((Object)(object)fireBeamPrefab)) { Util.PlaySound(swingSoundString, ((EntityState)this).gameObject); FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = fireBeamPrefab; val.position = ((Ray)(ref aimRay)).origin; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = fireBeamDamage * ((EntityState)this).characterBody.damage; val.crit = ((BaseState)this).RollCrit(); FireProjectileInfo projectileInfo = val; ModifyProjectile(ref projectileInfo); ProjectileManager.instance.FireProjectile(projectileInfo); } } } private void FireGroundAttack() { if (!hasFired) { hasFired = true; AkSoundEngine.StopPlayingID(stopChargeSound, 0); Util.PlaySound(swingSoundString, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { PlaySwingEffect(); } } if (((EntityState)this).isAuthority) { attack.Fire((List<HurtBox>)null); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!hasMuzzleEffect) { hasMuzzleEffect = true; swordMuzzle = Object.Instantiate<GameObject>(muzzleEffectPrefab, swordMuzzle).transform; Debug.Log((object)"spawning muzzle"); } if (inGroundedState) { if (((EntityState)this).fixedAge > chargeDuration && !hasFired) { FireGroundAttack(); hasFired = true; if (Object.op_Implicit((Object)(object)swordMuzzle)) { EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject); } } if (((EntityState)this).fixedAge >= totalDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } else { if (inGroundedState || !Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { return; } if (!hasFired) { ((EntityState)this).characterMotor.velocity.y = shortHopVelocity; } if (((EntityState)this).fixedAge > chargeDuration && !hasFired) { FireAerialAttack(); hasFired = true; if (Object.op_Implicit((Object)(object)swordMuzzle)) { EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject); } } if (((EntityState)this).fixedAge >= totalDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } } protected void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, 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; } public override void OnExit() { ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)swordMuzzle)) { EntityState.Destroy((Object)(object)((Component)swordMuzzle).gameObject); } if (!hasFired) { AkSoundEngine.StopPlayingID(stopChargeSound, 0); } animator.SetBool("isUsingIndependentSkill", false); } } internal class PulseLeap : BaseSkillState { private BlastAttack boostBlast; private string launchSound = "PlayBoltExit"; private float launchDamage = 2.5f; private GameObject launchEffect; private float aerialBoostCoefficient = 50f; private float groundXZBoostCoefficient = 50f; private float groundYBoostCoefficient = 30f; private float initialGroundedHopCoefficient = 10f; private ChildLocator childLocator; private Vector3 boostVelocity; private float charge = 1f; public float minLungeSpeed = 30f; public float maxLungeSpeed = 100f; public override void OnEnter() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Transform modelTransform = ((EntityState)this).GetModelTransform(); childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); if (!((EntityState)this).characterMotor.isGrounded) { Ray aimRay = ((BaseState)this).GetAimRay(); if ((double)((Ray)(ref aimRay)).direction.y < 0.5) { ((EntityState)this).PlayAnimation("FullBody, Override", "BoostAerial", "ShootGun.playbackRate", 0.1f); goto IL_008a; } } ((EntityState)this).PlayAnimation("Fulminate, Override", "BoostGrounded", "ShootGun.playbackRate", 0.1f); goto IL_008a; IL_008a: Util.PlaySound(launchSound, ((EntityState)this).gameObject); } public void FireLaunchBlast() { //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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown boostBlast = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = launchDamage * ((EntityState)this).characterBody.damage, baseForce = 0f, attackerFiltering = (AttackerFiltering)2, crit = ((EntityState)this).characterBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)32, falloffModel = (FalloffModel)0, inflictor = ((EntityState)this).gameObject, position = ((EntityState)this).characterBody.corePosition, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 6f, teamIndex = ((EntityState)this).characterBody.teamComponent.teamIndex }; DamageAPI.AddModdedDamageType(boostBlast, DamageTypes.applyCharge); boostBlast.Fire(); EffectData val = new EffectData { origin = childLocator.FindChild("FootL").position, scale = 1.5f }; launchEffect = Assets.boltExitEffect; EffectManager.SpawnEffect(launchEffect, val, true); } private void DoBoost() { //IL_00c9: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) Ray aimRay; if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.velocity.y = initialGroundedHopCoefficient; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(); CharacterMotor characterMotor = ((EntityState)this).characterMotor; Vector3 velocity = characterMotor.velocity; aimRay = ((BaseState)this).GetAimRay(); float num = ((Ray)(ref aimRay)).direction.x * groundXZBoostCoefficient; aimRay = ((BaseState)this).GetAimRay(); float num2 = Math.Abs(((Ray)(ref aimRay)).direction.y) * groundYBoostCoefficient; aimRay = ((BaseState)this).GetAimRay(); characterMotor.velocity = velocity + new Vector3(num, num2, ((Ray)(ref aimRay)).direction.z * groundXZBoostCoefficient); } else { ((EntityState)this).characterMotor.velocity.y = 0f; CharacterMotor characterMotor2 = ((EntityState)this).characterMotor; Vector3 velocity2 = characterMotor2.velocity; aimRay = ((BaseState)this).GetAimRay(); characterMotor2.velocity = velocity2 + ((Ray)(ref aimRay)).direction * aerialBoostCoefficient; } } public static Vector3 CalculateLungeVelocity(Vector3 currentVelocity, Vector3 aimDirection, float charge, float lungeSpeed) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: 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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) currentVelocity = ((Vector3.Dot(currentVelocity, aimDirection) < 0f) ? Vector3.zero : Vector3.Project(currentVelocity, aimDirection)); return currentVelocity + aimDirection * lungeSpeed; } public override void FixedUpdate() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = boostVelocity; FireLaunchBlast(); } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void CharacterMotor_onHitGround(ref HitGroundInfo hitGroundInfo) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1)) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } ((EntityState)this).characterMotor.onHitGroundServer -= new HitGroundDelegate(CharacterMotor_onHitGround); } public override void OnExit() { //IL_000e: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown if (NetworkServer.active && !((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1)) { CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); ((EntityState)this).characterMotor.onHitGroundServer += new HitGroundDelegate(CharacterMotor_onHitGround); } ((EntityState)this).OnExit(); } } public class AmpChargeTracker : MonoBehaviour { public class SyncOrbs : INetMessage, ISerializableObject { public enum METHOD { EnableSecondOrb, DisableSecondOrb } private NetworkInstanceId netId; private METHOD method; public SyncOrbs() { } public SyncOrbs(NetworkInstanceId netId, METHOD method) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) this.netId = netId; this.method = method; } void ISerializableObject.Deserialize(NetworkReader reader) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) netId = reader.ReadNetworkId(); method = (METHOD)reader.ReadInt32(); } void INetMessage.OnReceived() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) GameObject val = Util.FindNetworkObject(netId); if (!Object.op_Implicit((Object)(object)val)) { Debug.LogWarning((object)"SyncOrbs: Given network id associates with no known gameobject"); return; } switch (method) { case METHOD.EnableSecondOrb: EnableSecondOrb(val); break; case METHOD.DisableSecondOrb: DisableSecondOrb(val); break; default: Debug.LogError((object)"SyncOrbs: Invalid method sent to client"); break; } } void ISerializableObject.Serialize(NetworkWriter writer) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) writer.Write(netId); writer.Write((int)method); } private void EnableSecondOrb(GameObject go) { ((Component)go.GetComponent<ChildLocator>().FindChild("Orb2Location")).gameObject.SetActive(true); } private void DisableSecondOrb(GameObject go) { ((Component)go.GetComponent<ChildLocator>().FindChild("Orb2Location")).gameObject.SetActive(false); } } public GameObject owner; public GameObject victim; public CharacterBody ownerBody; public CharacterBody victimBody; private bool makeOrbs; private GameObject orbPrefab; private GameObject orbPrefabFull; private GameObject orbPair; private bool secondOrbActive; private void Start() { orbPrefab = owner.gameObject.GetComponent<AmpLightningController>().chargeOrb; orbPrefabFull = owner.gameObject.GetComponent<AmpLightningController>().chargeOrbFull; GameObject obj = owner; ownerBody = ((obj != null) ? obj.GetComponent<CharacterBody>() : null); GameObject obj2 = victim; victimBody = ((obj2 != null) ? obj2.GetComponent<CharacterBody>() : null); makeOrbs = Config.chargeOrbsEnable.Value; } [Server] private void CheckOrbDraw() { //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) if (!makeOrbs) { return; } if (Object.op_Implicit((Object)(object)victimBody) && victimBody.healthComponent.health <= 0f) { DestroyOrbs(); return; } int buffCount = victimBody.GetBuffCount(Buffs.chargeBuildup); if (buffCount >= 1 && !Object.op_Implicit((Object)(object)orbPair)) { if (buffCount == 2) { orbPair = Object.Instantiate<GameObject>(orbPrefabFull, victim.transform); secondOrbActive = true; } else { orbPair = Object.Instantiate<GameObject>(orbPrefab, victim.transform); } NetworkedBodyAttachment component = orbPair.GetComponent<NetworkedBodyAttachment>(); component.AttachToGameObjectAndSpawn(victim, (string)null); } else if (buffCount == 2 && !secondOrbActive) { NetMessageExtensions.Send((INetMessage)(object)new SyncOrbs(orbPair.GetComponent<NetworkIdentity>().netId, SyncOrbs.METHOD.EnableSecondOrb), (NetworkDestination)1); secondOrbActive = true; } else if (buffCount == 1 && secondOrbActive) { NetMessageExtensions.Send((INetMessage)(object)new SyncOrbs(orbPair.GetComponent<NetworkIdentity>().netId, SyncOrbs.METHOD.DisableSecondOrb), (NetworkDestination)1); } else if (buffCount == 0 && Object.op_Implicit((Object)(object)orbPair)) { DestroyOrbs(); } } private void FixedUpdate() { CheckOrbDraw(); } private void DestroyOrbs() { if (Object.op_Implicit((Object)(object)orbPair)) { Object.Destroy((Object)(object)orbPair); orbPair = null; secondOrbActive = false; } } } [RequireComponent(typeof(VehicleSeat))] [RequireComponent(typeof(Rigidbody))] public class BoltVehicle : MonoBehaviour, ICameraStateProvider { [Header("Vehicle Parameters")] public float duration = 1.5f; public float initialSpeed = 50f; private AmpLightningController lightningController; public float targetSpeed = 50f; public float acceleration = 1000f; public string stateSoundString = "PlayBoltStateWind"; public float cameraLerpTime = 0.25f; public GameObject enterEffectPrefab; public string enterSoundString = "PlayBoltEnter"; public bool exitAllowed; public uint stopID; [Header("Blast Parameters")] public GameObject exitEffectPrefab; public string exitSoundString = "PlayBoltExit"; public float blastRadius = 1f; private BlastAttack boltBlast; [Header("Overlap Parameters")] public float overlapDamageCoefficient = 1.5f; public float overlapProcCoefficient = 1f; public float overlapForce = 0.5f; public float overlapFireFrequency = 30f; public float overlapResetFrequency = 1f; public float overlapVehicleDurationBonusPerHit; public GameObject overlapHitEffectPrefab = Assets.electricImpactEffect; [Header("Misc. Variables")] private float age; public bool hasDetonatedServer; private VehicleSeat vehicleSeat; private Rigidbody rigidbody; private OverlapAttack overlapAttack; private float overlapFireAge; private float overlapResetAge; private float blastDamageCoefficient = StaticValues.boltBlastDamageCoefficient; public void Awake() { hasDetonatedServer = false; vehicleSeat = ((Component)this).GetComponent<VehicleSeat>(); rigidbody = ((Component)this).GetComponent<Rigidbody>(); vehicleSeat.onPassengerEnter += OnPassengerEnter; vehicleSeat.onPassengerExit += OnPassengerExit; vehicleSeat.exitVehicleAllowedCheck.AddCallback((CallbackDelegate<Interactability, CharacterBody>)CheckExitAllowed); } private void CheckExitAllowed(CharacterBody characterBody, ref Interactability? resultOverride) { resultOverride = (Interactability)(exitAllowed ? 2 : 0); } private void OnPassengerExit(GameObject passenger) { AkSoundEngine.StopPlayingID(stopID, 0); Util.PlaySound(exitSoundString, ((Component)this).gameObject); if (NetworkServer.active) { DetonateServer(); } foreach (CameraRigController readOnlyInstances in CameraRigController.readOnlyInstancesList) { if ((Object)(object)readOnlyInstances.target == (Object)(object)passenger) { readOnlyInstances.SetOverrideCam((ICameraStateProvider)(object)this, 0.5f); readOnlyInstances.SetOverrideCam((ICameraStateProvider)null, 0.5f); } } } public void OnPassengerEnter(GameObject passenger) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00eb: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0151: 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_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown //IL_018a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)vehicleSeat.currentPassengerInputBank)) { Vector3 aimDirection = vehicleSeat.currentPassengerInputBank.aimDirection; rigidbody.rotation = Quaternion.LookRotation(aimDirection); rigidbody.velocity = aimDirection * initialSpeed; CharacterBody currentPassengerBody = vehicleSeat.currentPassengerBody; if (Object.op_Implicit((Object)(object)currentPassengerBody)) { lightningController = ((Component)currentPassengerBody).gameObject.GetComponent<AmpLightningController>(); } EffectData val = new EffectData { origin = currentPassengerBody.corePosition, scale = 10f }; enterEffectPrefab = lightningController.surgeEnter; EffectManager.SpawnEffect(enterEffectPrefab, val, true); Util.PlaySound(enterSoundString, ((Component)this).gameObject); if (NetworkServer.active) { currentPassengerBody.AddBuff(Buffs.HiddenInvincibility); } overlapAttack = new OverlapAttack { attacker = ((Component)currentPassengerBody).gameObject, damage = overlapDamageCoefficient * currentPassengerBody.damage, pushAwayForce = overlapForce, isCrit = currentPassengerBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, inflictor = ((Component)this).gameObject, procChainMask = default(ProcChainMask), procCoefficient = 1f, teamIndex = currentPassengerBody.teamComponent.teamIndex, hitBoxGroup = ((Component)this).gameObject.GetComponent<HitBoxGroup>(), hitEffectPrefab = overlapHitEffectPrefab }; DamageAPI.AddModdedDamageType(overlapAttack, DamageTypes.applyCharge); stopID = Util.PlaySound(stateSoundString, ((Component)this).gameObject); } } public void DetonateServer() { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b9: 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_00c0: 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_00ce: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_0137: Expected O, but got Unknown //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_0068: Expected O, but got Unknown if (!hasDetonatedServer) { hasDetonatedServer = true; CharacterBody currentPassengerBody = vehicleSeat.currentPassengerBody; if (NetworkServer.active) { currentPassengerBody.RemoveBuff(Buffs.HiddenInvincibility); } if (Object.op_Implicit((Object)(object)currentPassengerBody)) { EffectData val = new EffectData { origin = ((Component)this).transform.position, scale = 1.5f }; exitEffectPrefab = lightningController.surgeExitEffect; EffectManager.SpawnEffect(exitEffectPrefab, val, true); } boltBlast = new BlastAttack { attacker = ((Component)currentPassengerBody).gameObject, baseDamage = blastDamageCoefficient * currentPassengerBody.damage, baseForce = 0f, attackerFiltering = (AttackerFiltering)2, crit = currentPassengerBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)32, falloffModel = (FalloffModel)1, inflictor = ((Component)this).gameObject, position = ((Component)this).transform.position, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 10f, teamIndex = currentPassengerBody.teamComponent.teamIndex }; DamageAPI.AddModdedDamageType(boltBlast, DamageTypes.applyCharge); boltBlast.Fire(); Object.Destroy((Object)(object)((Component)this).gameObject); } } private void FixedUpdate() { //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)vehicleSeat) || !Object.op_Implicit((Object)(object)vehicleSeat.currentPassengerInputBank)) { return; } age += Time.fixedDeltaTime; overlapFireAge += Time.fixedDeltaTime; overlapResetAge += Time.fixedDeltaTime; if (NetworkServer.active) { if (overlapFireAge > 1f / overlapFireFrequency) { overlapAttack.Fire((List<HurtBox>)null); } if (overlapResetAge >= 1f / overlapResetFrequency) { overlapAttack.ResetIgnoredHealthComponents(); overlapResetAge = 0f; } } Ray val = vehicleSeat.currentPassengerInputBank.GetAimRay(); float num = default(float); val = CameraRigController.ModifyAimRayIfApplicable(val, ((Component)this).gameObject, ref num); Vector3 velocity = rigidbody.velocity; Vector3 val2 = ((Ray)(ref val)).direction * targetSpeed; Vector3 val3 = Vector3.MoveTowards(velocity, val2, acceleration * Time.fixedDeltaTime); rigidbody.MoveRotation(Quaternion.LookRotation(((Ray)(ref val)).direction)); rigidbody.AddForce(val3 - velocity, (ForceMode)2); } public void GetCameraState(CameraRigController cameraRigController, ref CameraState cameraState) { } public bool IsUserLookAllowed(CameraRigController cameraRigController) { return true; } public bool IsUserControlAllowed(CameraRigController cameraRigController) { return true; } public bool IsHudAllowed(CameraRigController cameraRigController) { return true; } } [RequireComponent(typeof(ProjectileDamage))] public class RadialDamage : MonoBehaviour { [Header("Damage Tick Parameters")] public float tickDamageCoefficient = 1.5f; private float interval = 1f; private float damageTimer; private string hitboxName = "VortexHitbox"; public DamageInfo damageInfo = new DamageInfo(); public GameObject explosionEffect; private OverlapAttack attack; private float resetStopwatch; private float fireStopwatch; public float resetFrequency = 1f; public float fireFrequency = 1f; [Header("Damaging Object Parameters")] protected Transform transform; protected TeamFilter teamFilter; [Header("Final Blast Parameters")] public BlastAttack radialBlast; public float finalBlastDamageCoefficient = 4f; private float timer; private string explosionString = "PlayVortexExplosion"; private string loopString = "PlayVortexLoop"; [Header("Damage Owner/Positional Parameters")] public ProjectileDamage projectileDamage; public ProjectileController projectileController; private ChildLocator childLocator; private HitBoxGroup vortexHitbox; private bool hasSetAttacker; public GameObject attacker; public CharacterBody charBody; public Vector3 position; public float radius = 10f; private SphereSearch sphereSearch; public float duration = 3f; private string spawnSound = "PlayVortexSpawn"; private void Awake() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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) projectileDamage = ((Component)this).GetComponent<ProjectileDamage>(); projectileController = ((Component)this).GetComponent<ProjectileController>(); transform = ((Component)this).GetComponent<Transform>(); teamFilter = ((Component)this).GetComponent<TeamFilter>(); sphereSearch = new SphereSearch(); PointSoundManager.EmitSoundServer(Assets.vortexSpawnSoundEvent.index, transform.position); PointSoundManager.EmitSoundServer(Assets.vortexLoopSoundEvent.index, transform.position); } private void Start() { //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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown attacker = (Object.op_Implicit((Object)(object)projectileController.owner) ? projectileController.owner.gameObject : null); charBody = (Object.op_Implicit((Object)(object)attacker) ? attacker.GetComponent<CharacterBody>() : null); ResetOverlap(); explosionEffect = Assets.vortexExplosionEffect; radialBlast = new BlastAttack { attacker = attacker, baseDamage = finalBlastDamageCoefficient * charBody.damage, baseForce = 0f, attackerFiltering = (AttackerFiltering)2, crit = charBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)0, falloffModel = (FalloffModel)0, inflictor = ((Component)this).gameObject, position = transform.position, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = radius, teamIndex = teamFilter.teamIndex }; } private void ResetOverlap() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0045: 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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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) attack = new OverlapAttack(); attack.procCoefficient = 1f; attack.attacker = attacker; attack.inflictor = ((Component)this).gameObject; attack.teamIndex = (TeamIndex)1; attack.attackerFiltering = (AttackerFiltering)2; attack.damage = tickDamageCoefficient * charBody.damage; attack.forceVector = Vector3.zero; attack.isCrit = charBody.RollCrit(); attack.damageColorIndex = (DamageColorIndex)0; attack.damageType = (DamageType)0; attack.hitBoxGroup = Array.Find(((Component)this).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName); } private void FixedUpdate() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Expected O, but got Unknown if (NetworkServer.active) { timer += Time.fixedDeltaTime; damageTimer -= Time.fixedDeltaTime; if (damageTimer <= 0f) { damageTimer = interval; ResetOverlap(); attack.Fire((List<HurtBox>)null); } } if (timer >= duration - Time.fixedDeltaTime) { radialBlast.Fire(); EffectData val = new EffectData { origin = transform.position, scale = 1.5f }; EffectManager.SpawnEffect(explosionEffect, val, true); timer = 0f; } } } public class SlashCombo : BaseMeleeAttack { private new float chargeProc = 100f; public override void OnEnter() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) AmpLightningController component = ((EntityState)this).GetComponent<AmpLightningController>(); hitboxName = "Sword"; damageType = (DamageType)0; damageCoefficient = 1.5f; procCoefficient = 0.1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 0.8f; attackStartTime = 0.2f; attackEndTime = 0.4f; baseEarlyExitTime = 0.4f; hitStopDuration = 0.012f; attackRecoil = 0.5f; hitHopVelocity = 4f; swingSoundString = "PlayStormbladeSwing1"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight"); swingEffectPrefab = component.swingEffect; hitEffectPrefab = component.swingHitEffect; impactSound = Assets.stormbladeHitSoundEvent.index; base.OnEnter(); } protected override void PlayAttackAnimation() { base.PlayAttackAnimation(); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } protected override void SetNextState() { int num = ((swingIndex == 0) ? 1 : 0); ((EntityState)this).outer.SetNextState((EntityState)(object)new SlashCombo { swingIndex = num }); } public override void OnExit() { base.OnExit(); } } public class SummonWurm : BaseSkillState { private string prefix = "NT"; private GenericSkill specialSlot; public static SkillDef cancelSkillDef; public static CharacterMaster wormMaster; public CharacterBody wormBody; public static GameObject wormExplosion; public static object src = new SummonWurm(); private bool hasSpawned; private float wormLifeDuration = 30f; private Animator animator; private string summonSoundString = "PlayWormSummon"; public override void OnEnter() { //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("Worm, Override", "WormChannelRelease", "BaseSkill.playbackRate", 0.5f); animator = ((EntityState)this).GetModelAnimator(); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_NAME"; skillDefInfo.skillNameToken = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_NAME"; skillDefInfo.skillDescriptionToken = prefix + "_AMP_BODY_SPECIAL_WORMCANCEL_DESCRIPTION"; skillDefInfo.skillIcon = Assets.mainAssetBundle.LoadAsset<Sprite>("texReturn"); skillDefInfo.activationStateMachineName = "Slide"; skillDefInfo.activationState = new SerializableEntityStateType(typeof(CancelWurm)); skillDefInfo.baseMaxStock = 0; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.forceSprintDuringState = false; skillDefInfo.fullRestockOnAssign = false; skillDefInfo.interruptPriority = (InterruptPriority)0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.isCombatSkill = false; skillDefInfo.mustKeyPress = true; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.rechargeStock = 0; skillDefInfo.requiredStock = 0; skillDefInfo.stockToConsume = 0; cancelSkillDef = Skills.CreateSkillDef(skillDefInfo); specialSlot = ((EntityState)this).skillLocator.special; if (Object.op_Implicit((Object)(object)specialSlot) && (Object)(object)cancelSkillDef != (Object)null) { specialSlot.SetSkillOverride(src, cancelSkillDef, (SkillOverridePriority)4); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { SpawnWorm(((EntityState)this).characterBody); } animator.SetBool("HasChannelled", false); } private void SpawnWorm(CharacterBody characterBody) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) GameObject melvinPrefab = Assets.melvinPrefab; Util.PlaySound(summonSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "HandL", false); if (NetworkServer.active) { MasterSummon val = new MasterSummon { masterPrefab = melvinPrefab, ignoreTeamMemberLimit = false, teamIndexOverride = (TeamIndex)1, summonerBodyObject = ((Component)characterBody).gameObject, position = characterBody.corePosition + new Vector3(0f, 0f, 2f), rotation = characterBody.transform.rotation, inventoryToCopy = characterBody.inventory, inventoryItemCopyFilter = (ItemIndex index) => index != Items.ExtraLife.itemIndex && index != Items.ExtraLifeVoid.itemIndex }; val.preSpawnSetupCallback = delegate(CharacterMaster master) { master.inventory.GiveItem(Assets.wormHealth, 1); }; wormMaster = val.Perform(); } if (!Object.op_Implicit((Object)(object)wormMaster)) { return; } wormBody = wormMaster.GetBody(); ((Component)wormMaster).gameObject.AddComponent<MasterSuicideOnTimer>().lifeTimer = wormLifeDuration; if (NetworkServer.active) { for (int i = -1; i <= wormMaster.inventory.GetItemCount(Items.ExtraLife.itemIndex) + 1; i++) { wormMaster.inventory.RemoveItem(Items.ExtraLife.itemIndex, 1); } for (int j = 0; j <= wormMaster.inventory.GetItemCount(Items.ExtraLifeVoid.itemIndex) + 1; j++) { wormMaster.inventory.RemoveItem(Items.ExtraLifeVoid.itemIndex, 1); } } if (Object.op_Implicit((Object)(object)wormMaster.GetBody())) { GameObject bodyObject = wormMaster.GetBodyObject(); WormHealthTracker wormHealthTracker = bodyObject.AddComponent<WormHealthTracker>(); wormHealthTracker.owner = ((EntityState)this).gameObject; wormHealthTracker.wormSkill = src; wormHealthTracker.wormMaster = wormMaster; wormHealthTracker.cancelSkillDef = cancelSkillDef; wormHealthTracker.specialSlot = ((EntityState)this).skillLocator.special; } } private void SetupWorm(CharacterBody body) { body.statsDirty = true; } private void recalcWorm(CharacterBody body, StatHookEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (body.bodyIndex == wormBody.bodyIndex) { args.baseHealthAdd -= wormBody.baseMaxHealth - ((EntityState)this).characterBody.baseMaxHealth * 3f; } } public override void OnExit() { ((EntityState)this).OnExit(); specialSlot.UnsetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } } public class Surge : BaseSkillState { private float duration = 1.5f; private float delay = 0.2f; public GameObject boltObject; public InputBankTest inputBank; public CharacterMaster master; public bool naturalEnd; private bool hasEffectiveAuthority; private GameObject boltVehicle; private VehicleSeat boltSeat; private GenericSkill utilitySlot; private NetworkBehaviour networkBehaviour; private float ageCheck; private AmpLightningController lightningController; private bool exitedEarly; public static SkillDef cancelSkillDef; private string prefix = "NT"; private void UpdateAuthority() { hasEffectiveAuthority = Util.HasEffectiveAuthority(((EntityState)this).gameObject); } public override void OnEnter() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (!NetworkServer.active) { return; } UpdateAuthority(); lightningController = ((EntityState)this).GetComponent<AmpLightningController>(); networkBehaviour = ((EntityState)this).GetComponent<NetworkBehaviour>(); cancelSkillDef = Skills.surgeCancelSkillDef; utilitySlot = ((EntityState)this).skillLocator.utility; if (Object.op_Implicit((Object)(object)utilitySlot) && Object.op_Implicit((Object)(object)cancelSkillDef)) { utilitySlot.SetSkillOverride((object)this, cancelSkillDef, (SkillOverridePriority)4); } Ray aimRay = ((BaseState)this).GetAimRay(); boltObject = Object.Instantiate<GameObject>(lightningController.surgeVehicle, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(((Ray)(ref aimRay)).direction)); boltObject.GetComponent<VehicleSeat>().AssignPassenger(((EntityState)this).gameObject); CharacterBody characterBody = ((EntityState)this).characterBody; NetworkUser val; if ((Object)(object)characterBody == (Object)null) { val = null; } else { CharacterMaster val2 = characterBody.master; if ((Object)(object)val2 == (Object)null) { val = null; } else { PlayerCharacterMasterController playerCharacterMasterCo