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 Rocket v1.1.3
plugins/EnforcerGang-Rocket/RocketSurvivor.dll
Decompiled 3 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EmotesAPI; using EntityStates; using EntityStates.RocketSurvivorSkills; using EntityStates.RocketSurvivorSkills.Emote; using EntityStates.RocketSurvivorSkills.Primary; using EntityStates.RocketSurvivorSkills.Secondary; using EntityStates.RocketSurvivorSkills.Special; using EntityStates.RocketSurvivorSkills.Utility; using HG; using HG.BlendableTypes; using IL.RoR2; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Projectile; using RoR2.Skills; using RocketSurvivor; using RocketSurvivor.Components; using RocketSurvivor.Components.Projectile; using RocketSurvivor.Modules; using RocketSurvivor.Modules.Characters; using RocketSurvivor.Modules.Survivors; using RocketSurvivor.SkillStates.BaseStates; using TILER2; using ThinkInvisible.ClassicItems; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using VRAPI; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyCompany("RocketSurvivor")] [assembly: AssemblyProduct("RocketSurvivor")] [assembly: AssemblyTitle("RocketSurvivor")] [assembly: AssemblyInformationalVersion("1.0.0+c2a233e90b2227fdf3025e637aeff2bf53a4fac2")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [Microsoft.CodeAnalysis.Embedded] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [Microsoft.CodeAnalysis.Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } public class AnimationPlaySmokeParticle : MonoBehaviour { [SerializeField] private Transform smokeBone; [SerializeField] private ParticleSystem smokeParticleSystem; public void Smoke() { } } public class BootlegCopyTransformsConstraint : MonoBehaviour { [SerializeField] private Animator animator; [SerializeField] private Transform shovel; [SerializeField] private Transform shovelHand; [SerializeField] private string animatorParameter; private bool holdingShovel = false; private void FixedUpdate() { if (holdingShovel && animator.GetFloat(animatorParameter) < 1f) { holdingShovel = false; } } private void LateUpdate() { //IL_0018: 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) if (holdingShovel) { shovel.position = shovelHand.position; shovel.rotation = shovelHand.rotation; } } public void Reparent() { holdingShovel = true; } } namespace EntityStates.RocketSurvivorSkills { public class RocketMainState : GenericCharacterMain { private Animator animator; public LocalUser localUser; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); FindLocalUser(); } private void FindLocalUser() { if (localUser != null || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)readOnlyLocalUsers.cachedBody == (Object)(object)((EntityState)this).characterBody) { localUser = readOnlyLocalUsers; break; } } } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)animator)) { animator.SetFloat("RocketJump", ((EntityState)this).characterBody.HasBuff(Buffs.RocketJumpSpeedBuff) ? 1f : 0f); } if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded) { CheckEmote<Sit>(Config.KeybindEmoteSit); CheckEmote<Explode>(Config.KeybindEmoteShovel); CheckEmote<MenuPose>(Config.KeybindEmoteCSS); } } private void CheckEmote<T>(ConfigEntry<KeyboardShortcut> keybind) where T : EntityState, new() { if (Config.GetKeyPressed(keybind)) { FindLocalUser(); if (localUser != null && !localUser.isUIFocused) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new T(), (InterruptPriority)0); } } } } } namespace EntityStates.RocketSurvivorSkills.Utility { public class C4 : BaseState { public static string muzzleString = "MuzzleCenter"; public static string attackSoundString = "Play_commando_M2_grenade_throw"; public static GameObject projectilePrefab; public static GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(); public static float damageCoefficient = 12f; public static float force = 2400f; public static ConfigEntry<bool> vrUseOffhand; public static float baseDuration = 0.8f; public static float baseMinDuration = 0.2f; private float minDuration; private float duration; private bool buttonReleased = false; public override void OnEnter() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_004a: 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_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) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; minDuration = baseMinDuration / base.attackSpeedStat; Ray val = ((!RocketSurvivorPlugin.VRAPILoaded) ? ((BaseState)this).GetAimRay() : GetVRAimRay()); ((BaseState)this).StartAimMode(val, 3f, false); ((EntityState)this).PlayAnimation("Gesture, Override", "NitroCharge", "ThrowBomb.playbackRate", duration, 0f); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleString, false); } if (((EntityState)this).isAuthority) { ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref val)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private Ray GetVRAimRay() { //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_0063: 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_0067: 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_0050: 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) Ray result = ((BaseState)this).GetAimRay(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.master) && Utils.IsUsingMotionControls(((EntityState)this).characterBody.master)) { result = (vrUseOffhand.Value ? MotionControls.nonDominantHand.aimRay : MotionControls.dominantHand.aimRay); } return result; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!buttonReleased && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && !((EntityState)this).inputBank.skill3.down) { buttonReleased = true; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)((((EntityState)this).fixedAge >= minDuration && buttonReleased) ? 1 : 3); } } public class PrepComicallyLargeSpoon : BaseState { private bool success = false; public override void OnEnter() { ((BaseState)this).OnEnter(); Util.PlayAttackSpeedSound("Play_Moffein_RocketSurvivor_R_Alt_Prep", ((EntityState)this).gameObject, base.attackSpeedStat); ((EntityState)this).PlayAnimation("Shovel, Override", "HoldShovel"); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ButtonReleased()) { SetNextState(); success = true; } } public virtual bool ButtonReleased() { return !Object.op_Implicit((Object)(object)((EntityState)this).inputBank) || !((EntityState)this).inputBank.skill3.down; } public virtual void SetNextState() { ((EntityState)this).outer.SetNextState((EntityState)(object)new ComicallyLargeSpoon()); } 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)3; } public override void OnExit() { ((EntityState)this).OnExit(); if (!success) { ((EntityState)this).PlayAnimation("Shovel, Override", "BufferEmpty"); } } } public class ComicallyLargeSpoon : BaseMeleeAttack { private bool firedExplosion = false; public static float blastDamageCoefficient = 12f; public static float speedDamageCoefficient = 0.2f; public static float minSpeedForDamageBonus = 10.150001f; public override void OnEnter() { //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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) hitboxName = "Sword"; damageType = (DamageType)0; damageCoefficient = 0f; procCoefficient = 0f; pushForce = 0f; bonusForce = Vector3.zero; baseDuration = 0.6f; attackStartTime = 0f; attackEndTime = 0.8f; baseEarlyExitTime = 1f; hitStopDuration = 0.012f; attackRecoil = 0.5f; hitHopVelocity = 36f; swingSoundString = "Play_Moffein_RocketSurvivor_R_Alt_Swing"; hitSoundString = "Play_Moffein_RocketSurvivor_R_Alt_Hit"; muzzleString = "SwordHitbox"; swingEffectPrefab = Assets.spoonSwingEffect; hitEffectPrefab = null; impactSound = Assets.spoonHitSoundEvent.index; base.OnEnter(); } protected override void PlayAttackAnimation() { base.PlayAttackAnimation(); ((EntityState)this).PlayCrossfade("Gesture, Override", "SwingShovel", "Swing.playbackRate", duration * 2f, 0.05f); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } public virtual float CalculateAdditionalSpeedDamage(float speed) { return Mathf.Max(0f, speed - minSpeedForDamageBonus) * speedDamageCoefficient; } protected override void OnHitEnemyAuthority() { //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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_011a: 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_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Expected O, but got Unknown base.OnHitEnemyAuthority(); if (!firedExplosion) { firedExplosion = true; float speed = 0f; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { speed = ((Vector3)(ref ((EntityState)this).characterMotor.velocity)).magnitude; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { float num = CalculateAdditionalSpeedDamage(speed); BlastAttack ba = new BlastAttack { attacker = ((EntityState)this).gameObject, attackerFiltering = (AttackerFiltering)2, baseDamage = (blastDamageCoefficient + num) * ((BaseState)this).damageStat, baseForce = 2400f, bonusForce = Vector3.zero, canRejectForce = true, crit = false, damageColorIndex = (DamageColorIndex)0, damageType = (DamageTypeCombo.op_Implicit((DamageType)32) | DamageTypeCombo.op_Implicit((DamageSource)4)), falloffModel = (FalloffModel)0, inflictor = ((EntityState)this).gameObject, position = ((EntityState)this).characterBody.corePosition, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 12f, teamIndex = ((BaseState)this).GetTeam() }; DamageAPI.AddModdedDamageType(ba, DamageTypes.ScaleForceToMass); DamageAPI.AddModdedDamageType(ba, DamageTypes.SlamDunk); DamageAPI.AddModdedDamageType(ba, DamageTypes.MarketGarden); ModifyBlastAttack(ref ba); ba.Fire(); EffectManager.SpawnEffect(AirDet.explosionEffectPrefab, new EffectData { origin = ((EntityState)this).characterBody.corePosition, scale = ba.radius }, true); } } } public virtual void ModifyBlastAttack(ref BlastAttack ba) { } 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() { base.OnExit(); ((EntityState)this).PlayAnimation("Shovel, Override", "BufferEmpty"); } } } namespace EntityStates.RocketSurvivorSkills.Special { public class PrepComicallyLargeSpoonScepter : PrepComicallyLargeSpoon { public override void SetNextState() { ((EntityState)this).outer.SetNextState((EntityState)(object)new ComicallyLargeSpoonScepter()); } public override bool ButtonReleased() { return !Object.op_Implicit((Object)(object)((EntityState)this).inputBank) || !((EntityState)this).inputBank.skill4.down; } } public class ComicallyLargeSpoonScepter : ComicallyLargeSpoon { public override float CalculateAdditionalSpeedDamage(float speed) { return base.CalculateAdditionalSpeedDamage(speed) * 2f; } public override void ModifyBlastAttack(ref BlastAttack ba) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ba.damageType.damageSource = (DamageSource)8; BlastAttack obj = ba; obj.radius *= 1.5f; BlastAttack obj2 = ba; obj2.baseDamage *= 1.5f; } } public class PrepComicallyLargeSpoonSpecial : PrepComicallyLargeSpoon { public override void SetNextState() { ((EntityState)this).outer.SetNextState((EntityState)(object)new ComicallyLargeSpoonSpecial()); } public override bool ButtonReleased() { return !Object.op_Implicit((Object)(object)((EntityState)this).inputBank) || !((EntityState)this).inputBank.skill4.down; } } public class ComicallyLargeSpoonSpecial : ComicallyLargeSpoon { public override void ModifyBlastAttack(ref BlastAttack ba) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ba.damageType.damageSource = (DamageSource)8; } } public class FireAllRockets : BaseState { public class RocketSkillInfo { public SkillDef skillDef; public GameObject projectilePrefab; public GameObject projectilePrefabICBM; public GameObject effectPrefab; public string muzzleString; public string attackSoundString; public float damageCoefficient; public float force; } private float lastUpdateTime; private RocketSkillInfo selectedRocketSkill; private bool isCrit; private float fireStopwatch; private DamageTypeCombo damageTypeInternal; public float delayBetweenShots; public int shotsRemaining; public static int baseShotCount = 4; public static float baseDelayBetweenShots = 0.2f; public static List<RocketSkillInfo> rocketSkillInfoList = new List<RocketSkillInfo>(); public override void OnEnter() { //IL_00b1: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_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) ((BaseState)this).OnEnter(); lastUpdateTime = Time.time; fireStopwatch = 0f; delayBetweenShots = baseDelayBetweenShots / base.attackSpeedStat; shotsRemaining = ((Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary)) ? ((EntityState)this).skillLocator.primary.maxStock : baseShotCount); isCrit = ((BaseState)this).RollCrit(); SkillDef sd = ((!Object.op_Implicit((Object)(object)((EntityState)this).skillLocator)) ? RocketSurvivorSetup.FireRocketSkillDef : ((EntityState)this).skillLocator.primary.baseSkill); selectedRocketSkill = FindRocketSkillInfo(sd); damageTypeInternal = DamageTypeCombo.GenericSpecial; if (selectedRocketSkill != null && Object.op_Implicit((Object)(object)selectedRocketSkill.projectilePrefab)) { ProjectileDamage component = selectedRocketSkill.projectilePrefab.GetComponent<ProjectileDamage>(); if (Object.op_Implicit((Object)(object)component)) { damageTypeInternal = component.damageType; } } else { DamageAPI.AddModdedDamageType(ref damageTypeInternal, DamageTypes.ScaleForceToMass); } damageTypeInternal.damageSource = (DamageSource)8; ModifyStats(); } public virtual void ModifyStats() { } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); float num = Time.time - lastUpdateTime; lastUpdateTime = Time.time; if (fireStopwatch <= 0f) { fireStopwatch += delayBetweenShots; if (shotsRemaining > 0) { FireProjectile(); } } fireStopwatch -= num; if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && shotsRemaining <= 0) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Rearm()); } } public void FireProjectile() { //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_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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_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_00f6: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; float iCBMDamageMult = RocketSurvivorPlugin.GetICBMDamageMult(((EntityState)this).characterBody); if (Config.pocketICBM.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory) && ((EntityState)this).characterBody.inventory.GetItemCount(Items.MoreMissile) > 0) { Vector3 val = Vector3.Cross(Vector3.up, ((Ray)(ref aimRay)).direction); Vector3 val2 = Vector3.Cross(((Ray)(ref aimRay)).direction, val); float num = 0f; float num2 = 0f; float num3 = 0f; num3 = Random.Range(1f + num, 1f + num) * 3f; num2 = num3 / 2f; Vector3 val3 = Quaternion.AngleAxis((0f - num3) * 0.5f, val2) * ((Ray)(ref aimRay)).direction; Quaternion val4 = Quaternion.AngleAxis(num2, val2); Ray val5 = default(Ray); ((Ray)(ref val5))..ctor(((Ray)(ref aimRay)).origin, val3); for (int i = 0; i < 3; i++) { direction = ((Ray)(ref val5)).direction; if (shotsRemaining != baseShotCount) { } bool flag = i == 1 || Config.pocketICBMEnableKnockback.Value; ProjectileManager.instance.FireProjectile(GetProjectilePrefab(flag), ((Ray)(ref val5)).origin, Util.QuaternionSafeLookRotation(direction), ((EntityState)this).gameObject, iCBMDamageMult * base.damageStat * GetDamageCoefficient(), flag ? (GetForce() * 0.25f) : 0f, isCrit, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); ((Ray)(ref val5)).direction = val4 * ((Ray)(ref val5)).direction; } } else { if (shotsRemaining != baseShotCount) { } ProjectileManager.instance.FireProjectile(GetProjectilePrefab(), ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(direction), ((EntityState)this).gameObject, base.damageStat * GetDamageCoefficient(), GetForce() * 0.25f, isCrit, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)damageTypeInternal); } ((BaseState)this).StartAimMode(aimRay, 3f, false); } GameObject effectPrefab = GetEffectPrefab(); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, GetMuzzleString(), false); } ((EntityState)this).PlayAnimation("Gesture, Override", "SpecialShoot"); Util.PlaySound(GetAttackSoundString(), ((EntityState)this).gameObject); shotsRemaining--; } private string GetAttackSoundString() { if (selectedRocketSkill != null) { return selectedRocketSkill.attackSoundString; } return FireRocket.attackSoundString; } private GameObject GetProjectilePrefab(bool enableKnockback = true) { if (selectedRocketSkill == null) { return null; } if (enableKnockback) { return selectedRocketSkill.projectilePrefab; } return selectedRocketSkill.projectilePrefabICBM; } private GameObject GetEffectPrefab() { if (selectedRocketSkill != null) { return selectedRocketSkill.effectPrefab; } return null; } private string GetMuzzleString() { if (selectedRocketSkill != null) { return selectedRocketSkill.muzzleString; } return string.Empty; } private float GetDamageCoefficient() { if (selectedRocketSkill != null) { return selectedRocketSkill.damageCoefficient; } return 0f; } private float GetForce() { if (selectedRocketSkill != null) { return selectedRocketSkill.force; } return 0f; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } public static RocketSkillInfo FindRocketSkillInfo(SkillDef sd) { foreach (RocketSkillInfo rocketSkillInfo in rocketSkillInfoList) { if ((Object)(object)rocketSkillInfo.skillDef == (Object)(object)sd) { return rocketSkillInfo; } } return null; } } public class FireAllRocketsScepter : FireAllRockets { public override void ModifyStats() { shotsRemaining = Mathf.FloorToInt((float)shotsRemaining * 2.5f); delayBetweenShots *= 0.5f; } } public class Rearm : BaseState { public static GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Loader/OmniImpactVFXLoader.prefab").WaitForCompletion(); public static string soundString = "Play_Moffein_RocketSurvivor_Shift_Rearm"; public static float baseDuration = 0.96f; public static float vfxPercent = 0.75f; private float duration; private bool playedEffect = false; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Util.PlayAttackSpeedSound(soundString, ((EntityState)this).gameObject, base.attackSpeedStat); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!playedEffect && ((EntityState)this).fixedAge >= duration * vfxPercent) { playedEffect = true; EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, "Exhaust", false); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator)) { ((EntityState)this).skillLocator.primary.Reset(); } ((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)3; } } } namespace EntityStates.RocketSurvivorSkills.Secondary { public class AirDet : BaseState { public static GameObject explosionEffectPrefab; public static GameObject concExplosionEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerMineExplosion.prefab").WaitForCompletion(); public static float forceMult = 1.3f; public static float radiusMult = 1.5f; public static float damageMult = 1.5f; public static float minRadius = 10f; public static float baseDuration = 0.25f; private bool buttonReleased = false; public override void OnEnter() { ((BaseState)this).OnEnter(); RocketTrackerComponent component = ((EntityState)this).GetComponent<RocketTrackerComponent>(); if (Object.op_Implicit((Object)(object)component)) { if (((EntityState)this).isAuthority) { component.ClientDetonateBlastJump(); } if (NetworkServer.active) { component.ServerDetonateRocket(); } } ((EntityState)this).PlayAnimation("LeftArm, Override", "RemoteDet"); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { if (!buttonReleased && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && !((EntityState)this).inputBank.skill2.down) { buttonReleased = true; } if (((EntityState)this).fixedAge > baseDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_000d: 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) return (InterruptPriority)((!buttonReleased) ? 2 : 0); } } } namespace EntityStates.RocketSurvivorSkills.Primary { public class EnterReload : BaseState { public static float baseDuration = 0.12f; private float duration => baseDuration / base.attackSpeedStat; public override void OnEnter() { ((BaseState)this).OnEnter(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge > duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Reload()); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class FireRocket : BaseState { public static GameObject explosionEffectPrefab; public static string muzzleString = "MuzzleRocketLauncher"; public static string attackSoundString = "Play_Moffein_RocketSurvivor_M1_Shoot"; public static GameObject projectilePrefab; public static GameObject projectilePrefabICBM; public static GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/MuzzleflashBarrage.prefab").WaitForCompletion(); public static float damageCoefficient = 6f; public static float force = 2000f; public static float baseDuration = 0.8f; private float duration; public override void OnEnter() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_0097: 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_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0281: 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_00fd: 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_010b: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_0204: 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) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); ((EntityState)this).PlayAnimation("Gesture, Override", "Shoot"); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleString, false); } if (!((EntityState)this).isAuthority) { return; } float iCBMDamageMult = RocketSurvivorPlugin.GetICBMDamageMult(((EntityState)this).characterBody); DamageTypeCombo genericPrimary = DamageTypeCombo.GenericPrimary; DamageAPI.AddModdedDamageType(ref genericPrimary, DamageTypes.ScaleForceToMass); if (Config.pocketICBM.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory) && ((EntityState)this).characterBody.inventory.GetItemCount(Items.MoreMissile) > 0) { Vector3 val = Vector3.Cross(Vector3.up, ((Ray)(ref aimRay)).direction); Vector3 val2 = Vector3.Cross(((Ray)(ref aimRay)).direction, val); float num = 0f; float num2 = 0f; float num3 = 0f; num3 = Random.Range(1f + num, 1f + num) * 3f; num2 = num3 / 2f; Vector3 val3 = Quaternion.AngleAxis((0f - num3) * 0.5f, val2) * ((Ray)(ref aimRay)).direction; Quaternion val4 = Quaternion.AngleAxis(num2, val2); Ray val5 = default(Ray); ((Ray)(ref val5))..ctor(((Ray)(ref aimRay)).origin, val3); for (int i = 0; i < 3; i++) { bool flag = i == 1 || Config.pocketICBMEnableKnockback.Value; ProjectileManager.instance.FireProjectile(flag ? projectilePrefab : projectilePrefabICBM, ((Ray)(ref val5)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val5)).direction), ((EntityState)this).gameObject, iCBMDamageMult * base.damageStat * damageCoefficient, flag ? force : 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)genericPrimary); ((Ray)(ref val5)).direction = val4 * ((Ray)(ref val5)).direction; } } else { ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)genericPrimary); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireRocketAlt : BaseState { public static GameObject explosionEffectPrefab; public static string muzzleString = "MuzzleRocketLauncher"; public static string attackSoundString = "Play_Moffein_RocketSurvivor_M1_Alt_Shoot"; public static GameObject projectilePrefab; public static GameObject projectilePrefabICBM; public static GameObject effectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/MuzzleflashBarrage.prefab").WaitForCompletion(); public static float damageCoefficient = 6f; public static float force = 2250f; public static float baseDuration = 0.8f; private float duration; public override void OnEnter() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_0097: 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_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0281: 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_00fd: 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_010b: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_0204: 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) ((BaseState)this).OnEnter(); duration = FireRocket.baseDuration / base.attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); ((EntityState)this).PlayAnimation("Gesture, Override", "Shoot"); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleString, false); } if (!((EntityState)this).isAuthority) { return; } float iCBMDamageMult = RocketSurvivorPlugin.GetICBMDamageMult(((EntityState)this).characterBody); DamageTypeCombo genericPrimary = DamageTypeCombo.GenericPrimary; DamageAPI.AddModdedDamageType(ref genericPrimary, DamageTypes.ScaleForceToMass); if (Config.pocketICBM.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory) && ((EntityState)this).characterBody.inventory.GetItemCount(Items.MoreMissile) > 0) { Vector3 val = Vector3.Cross(Vector3.up, ((Ray)(ref aimRay)).direction); Vector3 val2 = Vector3.Cross(((Ray)(ref aimRay)).direction, val); float num = 0f; float num2 = 0f; float num3 = 0f; num3 = Random.Range(1f + num, 1f + num) * 3f; num2 = num3 / 2f; Vector3 val3 = Quaternion.AngleAxis((0f - num3) * 0.5f, val2) * ((Ray)(ref aimRay)).direction; Quaternion val4 = Quaternion.AngleAxis(num2, val2); Ray val5 = default(Ray); ((Ray)(ref val5))..ctor(((Ray)(ref aimRay)).origin, val3); for (int i = 0; i < 3; i++) { bool flag = i == 1 || Config.pocketICBMEnableKnockback.Value; ProjectileManager.instance.FireProjectile(flag ? projectilePrefab : projectilePrefabICBM, ((Ray)(ref val5)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val5)).direction), ((EntityState)this).gameObject, iCBMDamageMult * base.damageStat * damageCoefficient, flag ? force : 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)genericPrimary); ((Ray)(ref val5)).direction = val4 * ((Ray)(ref val5)).direction; } } else { ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)genericPrimary); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class Reload : BaseState { public static float enterSoundPitch = 1f; public static float exitSoundPitch = 1f; public static string enterSoundString = "Play_Moffein_RocketSurvivor_M1_Reload"; public static GameObject reloadEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/MuzzleflashSmokeRing.prefab").WaitForCompletion(); public static float baseDuration = 0.8f; private bool hasGivenStock; private float duration => baseDuration / base.attackSpeedStat; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).PlayCrossfade("Reload, Override", "EnterReload", "Reload.playbackRate", duration, 0.1f); Util.PlayAttackSpeedSound(enterSoundString, ((EntityState)this).gameObject, enterSoundPitch); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration / 2f) { GiveStock(); } if (((EntityState)this).isAuthority && !(((EntityState)this).fixedAge < duration)) { if (((EntityState)this).skillLocator.primary.stock < ((EntityState)this).skillLocator.primary.maxStock) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Reload()); } else { ((EntityState)this).outer.SetNextStateToMain(); } } } public override void OnExit() { ((EntityState)this).OnExit(); } private void GiveStock() { if (!hasGivenStock) { if (((EntityState)this).isAuthority && ((EntityState)this).skillLocator.primary.stock < ((EntityState)this).skillLocator.primary.maxStock) { ((EntityState)this).skillLocator.primary.AddOneStock(); } if (Object.op_Implicit((Object)(object)reloadEffectPrefab)) { EffectManager.SimpleMuzzleFlash(reloadEffectPrefab, ((EntityState)this).gameObject, "MuzzleRocketLauncher", false); } hasGivenStock = true; } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } } namespace EntityStates.RocketSurvivorSkills.Emote { public class BaseEmote : BaseState { public string soundString; public string animString; public float duration; public float animDuration; private Animator animator; private ChildLocator childLocator; public LocalUser localUser; private CharacterCameraParamsData emoteCameraParams = new CharacterCameraParamsData { maxPitch = BlendableFloat.op_Implicit(70f), minPitch = BlendableFloat.op_Implicit(-70f), pivotVerticalOffset = BlendableFloat.op_Implicit(0.5f), idealLocalCameraPos = BlendableVector3.op_Implicit(emoteCameraPosition), wallCushion = BlendableFloat.op_Implicit(0.1f) }; public static Vector3 emoteCameraPosition = new Vector3(0f, -0.5f, -8.9f); private CameraParamsOverrideHandle camOverrideHandle; public override void OnEnter() { //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); childLocator = ((EntityState)this).GetModelChildLocator(); FindLocalUser(); ((EntityState)this).characterBody.hideCrosshair = true; if (Object.op_Implicit((Object)(object)((EntityState)this).GetAimAnimator())) { ((Behaviour)((EntityState)this).GetAimAnimator()).enabled = false; } animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 0f); animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 0f); if (duration == 0f && animDuration == 0f) { duration = GetAnimatorClipDuration(); } if (animDuration == 0f && duration != 0f) { animDuration = duration; } if (animDuration > 0f) { ((EntityState)this).PlayAnimation("FullBody, Override", animString, "Emote.playbackRate", animDuration, 0f); } else { ((EntityState)this).PlayAnimation("FullBody, Override", animString); } Util.PlaySound(soundString, ((EntityState)this).gameObject); CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = emoteCameraParams; val.priority = 0f; CameraParamsOverrideRequest val2 = val; camOverrideHandle = ((EntityState)this).cameraTargetParams.AddParamsOverride(val2, 0.5f); } private float GetAnimatorClipDuration() { //IL_0059: 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) Animator modelAnimator = ((EntityState)this).GetModelAnimator(); modelAnimator.speed = 1f; modelAnimator.Update(0f); int layerIndex = modelAnimator.GetLayerIndex("FullBody, Override"); if (layerIndex >= 0) { modelAnimator.PlayInFixedTime(animString, layerIndex, 0f); modelAnimator.Update(0f); AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); return ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).length; } return 0f; } private void FindLocalUser() { if (localUser != null || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)readOnlyLocalUsers.cachedBody == (Object)(object)((EntityState)this).characterBody) { localUser = readOnlyLocalUsers; break; } } } public override void OnExit() { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); ((EntityState)this).characterBody.hideCrosshair = false; if (Object.op_Implicit((Object)(object)((EntityState)this).GetAimAnimator())) { ((Behaviour)((EntityState)this).GetAimAnimator()).enabled = true; } animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 1f); animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 1f); ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.5f); } public override void FixedUpdate() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); bool flag = false; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { if (!((EntityState)this).characterMotor.isGrounded) { flag = true; } if (((EntityState)this).characterMotor.velocity != Vector3.zero) { flag = true; } } if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { if (((EntityState)this).inputBank.skill1.down) { flag = true; } if (((EntityState)this).inputBank.skill2.down) { flag = true; } if (((EntityState)this).inputBank.skill3.down) { flag = true; } if (((EntityState)this).inputBank.skill4.down) { flag = true; } if (((EntityState)this).inputBank.jump.down) { flag = true; } if (((EntityState)this).inputBank.moveVector != Vector3.zero) { flag = true; } } if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded) { CheckEmote<Sit>(Config.KeybindEmoteSit); CheckEmote<Explode>(Config.KeybindEmoteShovel); CheckEmote<MenuPose>(Config.KeybindEmoteCSS); } if (duration > 0f && ((EntityState)this).fixedAge >= duration) { flag = true; } if (flag) { ((EntityState)this).outer.SetNextStateToMain(); } } private void CheckEmote<T>(ConfigEntry<KeyboardShortcut> keybind) where T : EntityState, new() { if (Config.GetKeyPressed(keybind)) { FindLocalUser(); if (localUser != null && !localUser.isUIFocused) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new T(), (InterruptPriority)0); } } } 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; } } public class Sit : BaseEmote { public override void OnEnter() { animString = "TauntSit"; duration = -1f; base.OnEnter(); } } public class Explode : BaseEmote { private const float startSoundDelay = 1f; private bool playedStartSound = false; private const float thump1Delay = 2.6666667f; private bool playedThump1 = false; private bool explosion = false; public override void OnEnter() { animString = "TauntShovel"; base.OnEnter(); } public override void FixedUpdate() { //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0118: 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_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: 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_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Expected O, but got Unknown //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Expected O, but got Unknown base.FixedUpdate(); if (!playedStartSound && ((EntityState)this).fixedAge >= 1f) { playedStartSound = true; Util.PlaySound("Play_Moffein_RocketSurvivor_R_Alt_Prep", ((EntityState)this).gameObject); } if (!playedThump1 && ((EntityState)this).fixedAge >= 2.6666667f) { playedThump1 = true; Util.PlaySound("Play_MULT_shift_hit", ((EntityState)this).gameObject); } if (explosion || !(((EntityState)this).fixedAge / duration >= 1f)) { return; } explosion = true; Util.PlaySound("Play_MULT_shift_hit", ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { BlastAttack val = new BlastAttack { attacker = null, attackerFiltering = (AttackerFiltering)1, baseDamage = 100f * ((BaseState)this).damageStat, baseForce = 8000f, bonusForce = Vector3.zero, canRejectForce = true, crit = ((BaseState)this).RollCrit(), damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit((DamageType)262176), falloffModel = (FalloffModel)2, inflictor = null, position = ((EntityState)this).characterBody.corePosition, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 12f, teamIndex = ((BaseState)this).GetTeam() }; val.Fire(); EffectManager.SpawnEffect(AirDet.explosionEffectPrefab, new EffectData { origin = ((EntityState)this).characterBody.corePosition, scale = val.radius }, true); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 36f); } } } } public class MenuPose : BaseEmote { private const float thumpSoundDelay = 1.5f; private const float loadSoundDelay = 4f / 15f; private bool playedThump = false; private bool playedLoad = false; public override void OnEnter() { animString = "TauntCSS"; duration = -1f; base.OnEnter(); } public override void FixedUpdate() { base.FixedUpdate(); if (!playedLoad && ((EntityState)this).fixedAge >= 4f / 15f) { playedLoad = true; Util.PlaySound("Play_Moffein_RocketSurvivor_Shift_Rearm", ((EntityState)this).gameObject); } if (!playedThump && ((EntityState)this).fixedAge >= 1.5f) { playedThump = true; Util.PlaySound("Play_MULT_shift_hit", ((EntityState)this).gameObject); } } } } namespace RocketSurvivor { public class Buffs { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static StatHookEventHandler <>9__2_0; public static hook_FixedUpdate <>9__2_1; public static hook_Jump <>9__2_2; public static Func<Instruction, bool> <>9__2_4; public static Func<Vector3, CharacterMotor, Vector3> <>9__2_5; public static Func<Instruction, bool> <>9__2_6; public static Func<float, CharacterMotor, float> <>9__2_7; public static Manipulator <>9__2_3; internal void <Initialize>b__2_0(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(RocketJumpSpeedBuff)) { args.moveSpeedMultAdd += 0.4f; } } internal void <Initialize>b__2_1(orig_FixedUpdate orig, CharacterMotor self) { orig.Invoke(self); if (((NetworkBehaviour)self).hasAuthority && self.isGrounded && Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(RocketJumpSpeedBuff)) { NetworkedBodyBlastJumpHandler component = ((Component)self).GetComponent<NetworkedBodyBlastJumpHandler>(); if (Object.op_Implicit((Object)(object)component)) { component.CallCmdRemoveRocketJumpBuff(); } } } internal void <Initialize>b__2_2(orig_Jump orig, CharacterMotor self, float hMult, float vMult, bool vault) { orig.Invoke(self, hMult, vMult, vault); if (((NetworkBehaviour)self).hasAuthority && self.body.HasBuff(RocketJumpSpeedBuff)) { NetworkedBodyBlastJumpHandler component = ((Component)self).GetComponent<NetworkedBodyBlastJumpHandler>(); if (Object.op_Implicit((Object)(object)component)) { component.CallCmdRemoveRocketJumpBuff(); } } } internal void <Initialize>b__2_3(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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) ILCursor val = new ILCursor(il); val.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_moveDirection") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<Vector3, CharacterMotor, Vector3>>((Func<Vector3, CharacterMotor, Vector3>)delegate(Vector3 moveDirection, CharacterMotor self) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (self.body.HasBuff(RocketJumpSpeedBuff) && moveDirection.x == 0f && moveDirection.z == 0f) { moveDirection = self.velocity; moveDirection.y = 0f; ((Vector3)(ref moveDirection)).Normalize(); } return moveDirection; }); val.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_walkSpeed") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, CharacterMotor, float>>((Func<float, CharacterMotor, float>)delegate(float walkSpeed, CharacterMotor self) { //IL_004a: 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_006b: 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) if (self.body.HasBuff(RocketJumpSpeedBuff)) { Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(self.velocity.x, self.velocity.z); float magnitude = ((Vector2)(ref val2)).magnitude; if (magnitude > walkSpeed) { Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(self.moveDirection.x, self.moveDirection.z); float num = 45f; float num2 = Vector2.Angle(val2, val3); float num3 = ((num2 <= num) ? 1f : (1f - (num2 - num) / (180f - num))); walkSpeed = Mathf.Lerp(walkSpeed, magnitude, num3); } } return walkSpeed; }); } internal bool <Initialize>b__2_4(Instruction x) { return ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_moveDirection"); } internal Vector3 <Initialize>b__2_5(Vector3 moveDirection, CharacterMotor self) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (self.body.HasBuff(RocketJumpSpeedBuff) && moveDirection.x == 0f && moveDirection.z == 0f) { moveDirection = self.velocity; moveDirection.y = 0f; ((Vector3)(ref moveDirection)).Normalize(); } return moveDirection; } internal bool <Initialize>b__2_6(Instruction x) { return ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_walkSpeed"); } internal float <Initialize>b__2_7(float walkSpeed, CharacterMotor self) { //IL_004a: 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_006b: 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) if (self.body.HasBuff(RocketJumpSpeedBuff)) { Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(self.velocity.x, self.velocity.z); float magnitude = ((Vector2)(ref val)).magnitude; if (magnitude > walkSpeed) { Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(self.moveDirection.x, self.moveDirection.z); float num = 45f; float num2 = Vector2.Angle(val, val2); float num3 = ((num2 <= num) ? 1f : (1f - (num2 - num) / (180f - num))); walkSpeed = Mathf.Lerp(walkSpeed, magnitude, num3); } } return walkSpeed; } } public static BuffDef RocketJumpSpeedBuff; public static bool initialized; public static void Initialize() { //IL_0014: 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) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //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: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Expected O, but got Unknown if (initialized) { return; } BuffDef val = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/SprintOutOfCombat/bdWhipBoost.asset").WaitForCompletion(); RocketJumpSpeedBuff = CreateBuffDef("RocketSurvivorRocketJumpSpeedBuff", canStack: false, isCooldown: false, isDebuff: false, new Color(0.376f, 0.843f, 0.898f), val.iconSprite); object obj = <>c.<>9__2_0; if (obj == null) { StatHookEventHandler val2 = delegate(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(RocketJumpSpeedBuff)) { args.moveSpeedMultAdd += 0.4f; } }; <>c.<>9__2_0 = val2; obj = (object)val2; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; object obj2 = <>c.<>9__2_1; if (obj2 == null) { hook_FixedUpdate val3 = delegate(orig_FixedUpdate orig, CharacterMotor self) { orig.Invoke(self); if (((NetworkBehaviour)self).hasAuthority && self.isGrounded && Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(RocketJumpSpeedBuff)) { NetworkedBodyBlastJumpHandler component2 = ((Component)self).GetComponent<NetworkedBodyBlastJumpHandler>(); if (Object.op_Implicit((Object)(object)component2)) { component2.CallCmdRemoveRocketJumpBuff(); } } }; <>c.<>9__2_1 = val3; obj2 = (object)val3; } CharacterMotor.FixedUpdate += (hook_FixedUpdate)obj2; object obj3 = <>c.<>9__2_2; if (obj3 == null) { hook_Jump val4 = delegate(orig_Jump orig, CharacterMotor self, float hMult, float vMult, bool vault) { orig.Invoke(self, hMult, vMult, vault); if (((NetworkBehaviour)self).hasAuthority && self.body.HasBuff(RocketJumpSpeedBuff)) { NetworkedBodyBlastJumpHandler component = ((Component)self).GetComponent<NetworkedBodyBlastJumpHandler>(); if (Object.op_Implicit((Object)(object)component)) { component.CallCmdRemoveRocketJumpBuff(); } } }; <>c.<>9__2_2 = val4; obj3 = (object)val4; } CharacterMotor.Jump += (hook_Jump)obj3; object obj4 = <>c.<>9__2_3; if (obj4 == null) { Manipulator val5 = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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) ILCursor val6 = new ILCursor(il); val6.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_moveDirection") }); val6.Emit(OpCodes.Ldarg_0); val6.EmitDelegate<Func<Vector3, CharacterMotor, Vector3>>((Func<Vector3, CharacterMotor, Vector3>)delegate(Vector3 moveDirection, CharacterMotor self) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if (self.body.HasBuff(RocketJumpSpeedBuff) && moveDirection.x == 0f && moveDirection.z == 0f) { moveDirection = self.velocity; moveDirection.y = 0f; ((Vector3)(ref moveDirection)).Normalize(); } return moveDirection; }); val6.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<CharacterMotor>(x, "get_walkSpeed") }); val6.Emit(OpCodes.Ldarg_0); val6.EmitDelegate<Func<float, CharacterMotor, float>>((Func<float, CharacterMotor, float>)delegate(float walkSpeed, CharacterMotor self) { //IL_004a: 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_006b: 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) if (self.body.HasBuff(RocketJumpSpeedBuff)) { Vector2 val7 = default(Vector2); ((Vector2)(ref val7))..ctor(self.velocity.x, self.velocity.z); float magnitude = ((Vector2)(ref val7)).magnitude; if (magnitude > walkSpeed) { Vector2 val8 = default(Vector2); ((Vector2)(ref val8))..ctor(self.moveDirection.x, self.moveDirection.z); float num = 45f; float num2 = Vector2.Angle(val7, val8); float num3 = ((num2 <= num) ? 1f : (1f - (num2 - num) / (180f - num))); walkSpeed = Mathf.Lerp(walkSpeed, magnitude, num3); } } return walkSpeed; }); }; <>c.<>9__2_3 = val5; obj4 = (object)val5; } CharacterMotor.PreMove += (Manipulator)obj4; initialized = true; } public static BuffDef CreateBuffDef(string name, bool canStack, bool isCooldown, bool isDebuff, Color color, Sprite iconSprite) { //IL_0025: 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) BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); ((Object)val).name = name; val.canStack = canStack; val.isCooldown = isCooldown; val.isDebuff = isDebuff; val.buffColor = color; val.iconSprite = iconSprite; Content.AddBuffDef(val); ((Object)val).name = ((Object)val).name; return val; } } public class DamageTypes { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__6_2; public static Func<float, BlastAttack, float> <>9__6_1; public static Manipulator <>9__6_0; internal void <Initialize>b__6_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.75f) })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, BlastAttack, float>>((Func<float, BlastAttack, float>)delegate(float damagePenalty, BlastAttack self) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(self, SweetSpotModifier)) { damagePenalty *= 2f / 3f; } return damagePenalty; }); } else { Debug.LogError((object)"RocketSurvivor: SweetSpotModifier IL Hook failed."); } } internal bool <Initialize>b__6_2(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.75f); } internal float <Initialize>b__6_1(float damagePenalty, BlastAttack self) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(self, SweetSpotModifier)) { damagePenalty *= 2f / 3f; } return damagePenalty; } } public static bool initialized; public static ModdedDamageType ScaleForceToMass; public static ModdedDamageType AirborneBonus; public static ModdedDamageType MarketGarden; public static ModdedDamageType SlamDunk; public static ModdedDamageType SweetSpotModifier; public static void Initialize() { //IL_000c: 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_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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown if (initialized) { return; } ScaleForceToMass = DamageAPI.ReserveDamageType(); AirborneBonus = DamageAPI.ReserveDamageType(); MarketGarden = DamageAPI.ReserveDamageType(); SlamDunk = DamageAPI.ReserveDamageType(); SweetSpotModifier = DamageAPI.ReserveDamageType(); object obj = <>c.<>9__6_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.75f) })) { val2.Emit(OpCodes.Ldarg_0); val2.EmitDelegate<Func<float, BlastAttack, float>>((Func<float, BlastAttack, float>)delegate(float damagePenalty, BlastAttack self) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(self, SweetSpotModifier)) { damagePenalty *= 2f / 3f; } return damagePenalty; }); } else { Debug.LogError((object)"RocketSurvivor: SweetSpotModifier IL Hook failed."); } }; <>c.<>9__6_0 = val; obj = (object)val; } BlastAttack.HandleHits += (Manipulator)obj; HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); initialized = true; } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0307: 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) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: 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_0296: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019b: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Invalid comparison between Unknown and I4 //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) CharacterBody body = self.body; if (Object.op_Implicit((Object)(object)body)) { bool flag = false; if (DamageAPI.HasModdedDamageType(damageInfo, ScaleForceToMass)) { bool flag2 = true; float num = 0f; if (Object.op_Implicit((Object)(object)body.characterMotor)) { flag2 = body.characterMotor.isGrounded; float magnitude = ((Vector3)(ref damageInfo.force)).magnitude; if (Object.op_Implicit((Object)(object)damageInfo.inflictor) && Object.op_Implicit((Object)(object)damageInfo.inflictor.transform)) { Vector3 val = body.corePosition - damageInfo.inflictor.transform.position; damageInfo.force = ((Vector3)(ref val)).normalized * magnitude; } num = body.characterMotor.mass; if (!body.characterMotor.isFlying && !flag2 && body.characterMotor.velocity.y < 0f) { damageInfo.force.y += body.characterMotor.velocity.y * -120f; } } else if (Object.op_Implicit((Object)(object)body.rigidbody)) { num = body.rigidbody.mass; } float num2 = Mathf.Max(1f, num / 100f * ((self.body.isChampion && flag2) ? 0.3f : 1f)); num2 = Mathf.Min(num2, 2.5f); damageInfo.force *= num2; } if (DamageAPI.HasModdedDamageType(damageInfo, AirborneBonus) && (body.isFlying || (Object.op_Implicit((Object)(object)body.characterMotor) && !body.characterMotor.isGrounded))) { damageInfo.damage *= 1.3f; flag = true; } if (DamageAPI.HasModdedDamageType(damageInfo, SlamDunk)) { Vector3 down = Vector3.down; if (body.isFlying) { Rigidbody rigidbody = body.rigidbody; if (Object.op_Implicit((Object)(object)rigidbody)) { damageInfo.force.y = 0f; down *= Mathf.Min(2.5f, Mathf.Max(rigidbody.mass / 100f, 1f)); damageInfo.force += 1600f * down; } } } if (flag && DamageAPI.HasModdedDamageType(damageInfo, ScaleForceToMass) && damageInfo.damage > 0f && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)2048)) == 0) { if ((int)damageInfo.damageColorIndex == 0) { damageInfo.damageColorIndex = (DamageColorIndex)5; } EffectManager.SimpleSoundEffect(Assets.spoonHitSoundEvent.index, damageInfo.position, true); } } if (DamageAPI.HasModdedDamageType(damageInfo, MarketGarden) && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && component.HasBuff(Buffs.RocketJumpSpeedBuff)) { damageInfo.crit = true; float num3 = component.crit / 100f; float num4 = (component.critMultiplier + num3) / component.critMultiplier; damageInfo.damage *= num4; } } orig.Invoke(self, damageInfo); } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.EnforcerGang.RocketSurvivor", "RocketSurvivor", "1.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RocketSurvivorPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Init <>9__12_0; internal void <EmoteAPICompat>b__12_0(orig_Init orig) { orig.Invoke(); foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { if (((Object)allSurvivorDef.bodyPrefab).name == "RocketSurvivorBody") { GameObject val = Assets.mainAssetBundle.LoadAsset<GameObject>("animRocketEmote.prefab"); CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, val, 0, true); val.GetComponentInChildren<BoneMapper>().scale = 1.5f; } } } } public const string MODUID = "com.EnforcerGang.RocketSurvivor"; public const string MODNAME = "RocketSurvivor"; public const string MODVERSION = "1.1.2"; public const string DEVELOPER_PREFIX = "MOFFEIN"; public static RocketSurvivorPlugin instance; public static bool infernoPluginLoaded; public static bool scepterStandaloneLoaded; public static bool scepterClassicLoaded; public static bool emoteAPILoaded; public static bool riskOfOptionsLoaded; public static bool VRAPILoaded; private void Awake() { instance = this; Files.PluginInfo = ((BaseUnityPlugin)this).Info; infernoPluginLoaded = Chainloader.PluginInfos.ContainsKey("HIFU.Inferno"); scepterStandaloneLoaded = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); scepterClassicLoaded = Chainloader.PluginInfos.ContainsKey("com.ThinkInvisible.ClassicItems"); emoteAPILoaded = Chainloader.PluginInfos.ContainsKey("com.weliveinasociety.CustomEmotesAPI"); riskOfOptionsLoaded = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); VRAPILoaded = Chainloader.PluginInfos.ContainsKey("com.DrBibop.VRAPI"); Log.Init(((BaseUnityPlugin)this).Logger); DamageTypes.Initialize(); Buffs.Initialize(); Assets.Initialize(); SoundBanks.Init(); Config.ReadConfig(); States.RegisterStates(); Projectiles.RegisterProjectiles(); new LanguageTokens(); ItemDisplays.PopulateDisplays(); new RocketSurvivorSetup().Initialize(); new ContentPacks().Initialize(); if (emoteAPILoaded) { EmoteAPICompat(); } Config.MuteM2Sound_SettingChanged(null, null); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void EmoteAPICompat() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__12_0; if (obj == null) { hook_Init val = delegate(orig_Init orig) { orig.Invoke(); foreach (SurvivorDef allSurvivorDef in SurvivorCatalog.allSurvivorDefs) { if (((Object)allSurvivorDef.bodyPrefab).name == "RocketSurvivorBody") { GameObject val2 = Assets.mainAssetBundle.LoadAsset<GameObject>("animRocketEmote.prefab"); CustomEmotesAPI.ImportArmature(allSurvivorDef.bodyPrefab, val2, 0, true); val2.GetComponentInChildren<BoneMapper>().scale = 1.5f; } } }; <>c.<>9__12_0 = val; obj = (object)val; } SurvivorCatalog.Init += (hook_Init)obj; } public static float GetICBMDamageMult(CharacterBody body) { float num = 1f; if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.MoreMissile); int num2 = itemCount - 1; if (num2 > 0) { num += (float)num2 * 0.5f; } } return num; } public static void SetupScepterClassic(string bodyName, SkillDef scepterSkill, SkillDef origSkill) { if (scepterClassicLoaded) { SetupScepterClassicInternal(bodyName, scepterSkill, origSkill); } } public static void SetupScepterStandalone(string bodyName, SkillDef scepterSkill, SkillSlot skillSlot, int skillIndex) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (scepterStandaloneLoaded) { SetupScepterStandaloneInternal(bodyName, scepterSkill, skillSlot, skillIndex); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void SetupScepterStandaloneInternal(string bodyName, SkillDef scepterSkill, SkillSlot skillSlot, int skillIndex) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(scepterSkill, bodyName, skillSlot, skillIndex); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void SetupScepterClassicInternal(string bodyName, SkillDef scepterSkill, SkillDef origSkill) { Item<Scepter>.instance.RegisterScepterSkill(scepterSkill, bodyName, (SkillSlot)3, origSkill); } } public class RocketTrackerSkillDef : SkillDef { protected class InstanceData : BaseSkillInstanceData { public RocketTrackerComponent rocketTracker; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { rocketTracker = ((Component)skillSlot).GetComponent<RocketTrackerComponent>() }; } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return HasRocket(skillSlot) && ((SkillDef)this).CanExecute(skillSlot); } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && HasRocket(skillSlot); } private static bool HasRocket([NotNull] GenericSkill skillSlot) { RocketTrackerComponent rocketTracker = ((InstanceData)(object)skillSlot.skillInstanceData).rocketTracker; return (Object)(object)rocketTracker != (Object)null && rocketTracker.IsRocketAvailable(); } } } namespace RocketSurvivor.SkillStates.BaseStates { public class BaseMeleeAttack : BaseSkillState { public int swingIndex; protected string hitboxName = "Sword"; protected DamageType damageType = (DamageType)0; protected float damageCoefficient = 3.5f; protected float procCoefficient = 1f; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected float baseDuration = 1f; protected float attackStartTime = 0.2f; protected float attackEndTime = 0.4f; protected float baseEarlyExitTime = 0.4f; protected float hitStopDuration = 0.012f; protected float attackRecoil = 0.75f; protected float hitHopVelocity = 4f; protected bool cancelled = false; protected string swingSoundString = ""; protected string hitSoundString = ""; protected string muzzleString = "SwingCenter"; protected GameObject swingEffectPrefab; protected GameObject hitEffectPrefab; protected NetworkSoundEventIndex impactSound; private float earlyExitTime; public float duration; private bool hasFired; private float hitPauseTimer; private OverlapAttack attack; protected bool inHitPause; private bool hasHopped; protected float stopwatch; protected Animator animator; private HitStopCachedState hitStopCachedState; private Vector3 storedVelocity; public override void OnEnter() { //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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Expected O, but got Unknown ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; earlyExitTime = baseEarlyExitTime / ((BaseState)this).attackSpeedStat; hasFired = false; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); ((EntityState)this).characterBody.outOfCombatStopwatch = 0f; animator.SetBool("attacking", true); HitBoxGroup hitBoxGroup = null; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName); } PlayAttackAnimation(); attack = new OverlapAttack { damageType = DamageTypeCombo.op_Implicit(damageType), attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), damage = damageCoefficient * ((BaseState)this).damageStat, procCoefficient = procCoefficient, hitEffectPrefab = hitEffectPrefab, forceVector = bonusForce, pushAwayForce = pushForce, hitBoxGroup = hitBoxGroup, isCrit = ((BaseState)this).RollCrit(), impactSound = impactSound }; } protected virtual void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("Gesture, Override", "Slash" + (1 + swingIndex), "Slash.playbackRate", duration, 0.05f); } public override void OnExit() { if (!hasFired && !cancelled) { FireAttack(); } ((EntityState)this).OnExit(); animator.SetBool("attacking", false); } protected virtual void PlaySwingEffect() { if (Object.op_Implicit((Object)(object)swingEffectPrefab)) { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, true); } } protected virtual void OnHitEnemyAuthority() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to