Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Amp v2.2.1
plugins/AmpMod.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; 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.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("AmpMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+b54d8a3941e60bd09723d2fabb1d949120f745ec")] [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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0179: 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_0213: 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_021c: 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) //IL_0232: 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(0.1f); ((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, 0f); } 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_0093: 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_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_00b6: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Expected O, but got Unknown //IL_00d7: 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) 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 = DamageTypeCombo.op_Implicit((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.onHitGroundAuthority += 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, 0f); 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (((Enum)((EntityState)this).characterBody.bodyFlags).HasFlag((Enum)(object)(BodyFlags)1)) { hitGroundInfo.velocity = Vector3.zero; CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); } ((EntityState)this).characterMotor.onHitGroundAuthority -= 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, 0f); 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, 0f); 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, 0f); } 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 = Asset.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 = Asset.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, 0f); 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, (DamageTypeCombo?)null); 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, 0f); 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) 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 = DamageTypeCombo.op_Implicit((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 = Asset.heatSwing; protected GameObject hitEffectPrefab = Asset.heatHit; protected float stopwatch; private ChildLocator childLocator; protected Animator animator; private bool hasMuzzleEffect; private GameObject muzzleEffectPrefab = Asset.plasmaMuzzle; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected NetworkSoundEventIndex impactSound = Asset.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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: 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, 0f); stopChargeSound = Util.PlaySound(chargeSoundString, ((EntityState)this).gameObject); attack = new OverlapAttack(); attack.damageType = DamageTypeCombo.op_Implicit(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, 0f); } } 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, 0f); goto IL_0094; } } ((EntityState)this).PlayAnimation("Fulminate, Override", "BoostGrounded", "ShootGun.playbackRate", 0.1f, 0f); goto IL_0094; IL_0094: 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_0062: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010d: 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 = DamageTypeCombo.op_Implicit((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 = Asset.boltExitEffect; EffectManager.SpawnEffect(launchEffect, val, true); } private void DoBoost() { //IL_00ce: 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_00dc: 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_00f1: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) Ray aimRay; if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.velocity.y = initialGroundedHopCoefficient; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); 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.onHitGroundAuthority -= 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.onHitGroundAuthority += 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 = Asset.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_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_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_0104: 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_0110: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_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 = DamageTypeCombo.op_Implicit((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(Asset.vortexSpawnSoundEvent.index, transform.position); PointSoundManager.EmitSoundServer(Asset.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_00bf: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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 = Asset.vortexExplosionEffect; radialBlast = new BlastAttack { attacker = attacker, baseDamage = finalBlastDamageCoefficient * charBody.damage, baseForce = 0f, attackerFiltering = (AttackerFiltering)2, crit = charBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, damageType = DamageTypeCombo.op_Implicit((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) //IL_00b1: 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 = DamageTypeCombo.op_Implicit((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 = Asset.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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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, 0f); 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 = Asset.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 = Asset.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(Asset.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 = ((Entity