Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of MULT Movement Primaries v1.2.0
MultMovementPrimaries.dll
Decompiled 11 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Toolbot; using On.EntityStates.Toolbot; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MultMovementPrimaries")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MultMovementPrimaries")] [assembly: AssemblyTitle("MultMovementPrimaries")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace MultMovementPrimaries; [BepInPlugin("com.brynzananas.multmovementprimaries", "MUL-T Movement Primaries", "1.2.0")] [BepInDependency("com.bepis.r2api", "5.0.10")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { public class RocketComponent : MonoBehaviour { public bool isHoming = true; public Vector3 direction; private bool applyNewVelocity = true; private bool applyNewDamage = true; private bool applyNewCooldown = true; public float rocketJumpPower = 1f; private void Update() { //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Expected O, but got Unknown //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).projectileController.owner.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } bool value = RocketEnableFinalHoming.Value; bool value2 = RocketEnableFinalVelocityIncrease.Value; bool value3 = RocketEnableRestockOnRelease.Value; if (((!(value3 || value || value2) || !((ButtonState)(ref component.inputBank.skill1)).justReleased) && (component.skillLocator.secondary.skillDef.skillIndex != ((SkillDef)grenadeSkillDef).skillIndex || !((ButtonState)(ref component.inputBank.skill2)).justReleased)) || !isHoming) { return; } if (value) { ((Component)this).GetComponent<Rigidbody>().velocity = Vector3.RotateTowards(((Component)this).GetComponent<Rigidbody>().velocity, direction, 180f, 0f); isHoming = false; } if (value2) { Rigidbody component2 = ((Component)this).GetComponent<Rigidbody>(); component2.velocity *= ConfigFloat(RocketFinalVelocity, RocketEnableConfig); EffectData val = new EffectData(); val.origin = ((Component)this).transform.position; bool flag = false; if (((Component)this).GetComponent<Rigidbody>().velocity != Vector3.zero) { val.rotation = Util.QuaternionSafeLookRotation(((Component)this).GetComponent<Rigidbody>().velocity); flag = true; } if (!flag) { val.rotation = ((Component)this).transform.rotation; } EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/SprintActivate"), val, true); } if (value3) { component.skillLocator.primary.stock = component.skillLocator.primary.maxStock; if (component.skillLocator.secondary.skillDef.skillIndex == ((SkillDef)grenadeSkillDef).skillIndex) { component.skillLocator.secondary.stock = component.skillLocator.secondary.maxStock; } } } private void FixedUpdate() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: 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_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: 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) if (RocketEnableDamageChange.Value && applyNewDamage) { ProjectileDamage projectileDamage = ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).projectileDamage; projectileDamage.damage *= ConfigFloat(RocketDamageChange, RocketEnableConfig); applyNewDamage = false; } CharacterBody component = ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).projectileController.owner.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } if (applyNewCooldown) { applyNewCooldown = false; } float num = Vector3.Distance(((Component)this).transform.position, component.corePosition); if (RocketEnableVelocityChange.Value && applyNewVelocity && num > 5f) { Rigidbody component2 = ((Component)this).GetComponent<Rigidbody>(); component2.velocity *= ConfigFloat(RocketVelocityChange, RocketEnableConfig); applyNewVelocity = false; } if (RocketEnablePowerScaling.Value) { ProjectileDamage projectileDamage2 = ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).projectileDamage; projectileDamage2.damage += component.damage * ConfigFloat(RocketDamageScaling, RocketEnableConfig) / 100f / 60f; ProjectileImpactExplosion component3 = ((Component)this).GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component3).blastRadius = ((ProjectileExplosion)component3).blastRadius + ConfigFloat(RocketRadiusScaling, RocketEnableConfig) / 60f; float num2 = ConfigFloat(RocketVelocityScaling, RocketEnableConfig); if (num2 != 0f) { Rigidbody component4 = ((Component)this).GetComponent<Rigidbody>(); component4.velocity *= 1f + num2 / 60f; } rocketJumpPower += ConfigFloat(RocketJumpScaling, RocketEnableConfig) / 60f; } Ray val = default(Ray); ((Ray)(ref val)).direction = component.inputBank.aimDirection; ((Ray)(ref val)).origin = component.inputBank.aimOrigin; Ray val2 = val; RaycastHit val3 = default(RaycastHit); if (isHoming && Util.CharacterRaycast(((Component)component).gameObject, val2, ref val3, 30000f, LayerMask.op_Implicit(LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)), (QueryTriggerInteraction)1)) { Vector3 val4 = ((RaycastHit)(ref val3)).point - ((Component)this).transform.position; direction = ((Vector3)(ref val4)).normalized; if (RocketEnableHoming.Value && num > 5f) { ((Component)this).GetComponent<Rigidbody>().velocity = Vector3.RotateTowards(((Component)this).GetComponent<Rigidbody>().velocity, direction, ConfigFloat(RocketHomingAngle, RocketEnableConfig), 0f); } } else { direction = ((Component)this).transform.forward; } } private void OnDisable() { //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: 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_0137: 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_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_018f: 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_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: 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_0166: 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_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: 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) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).projectileController.owner.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } if (RocketEnableRestockOnDestroy.Value) { if ((isHoming || !RocketEnableRestockOnRelease.Value) && component.skillLocator.primary.stock < component.skillLocator.primary.maxStock) { GenericSkill primary = component.skillLocator.primary; int stock = primary.stock; primary.stock = stock + 1; } if (component.skillLocator.secondary.skillDef.skillIndex == ((SkillDef)grenadeSkillDef).skillIndex && component.skillLocator.secondary.stock < component.skillLocator.secondary.maxStock) { GenericSkill secondary = component.skillLocator.secondary; int stock = secondary.stock; secondary.stock = stock + 1; } } if (RocketEnableJump.Value) { Vector3 position = ((Component)this).transform.position; Vector3 corePosition = component.corePosition; float num = Vector3.Distance(((Component)this).transform.position, component.footPosition); Vector3 zero = Vector3.zero; if (ConfigBool(RocketJumpMode, RocketEnableConfig)) { Vector3 val = corePosition - position; zero = ((Vector3)(ref val)).normalized * ConfigFloat(RocketJumpFlatMultiplier, RocketEnableConfig); } else { zero = (corePosition - position) * ConfigFloat(RocketJumpMultiplier, RocketEnableConfig); } if (component.characterMotor.isGrounded) { zero /= ConfigFloat(RocketJumpReduction, RocketEnableConfig); } zero *= rocketJumpPower; if (num < ((ProjectileExplosion)((Component)this).GetComponent<ProjectileImpactExplosion>()).blastRadius) { CharacterMotor characterMotor = component.characterMotor; characterMotor.velocity += zero * component.moveSpeed; } } } } public const string ModGuid = "com.brynzananas.multmovementprimaries"; public const string ModName = "MUL-T Movement Primaries"; public const string ModVer = "1.2.0"; public static ToolbotWeaponSkillDef grenadeSkillDef = Addressables.LoadAssetAsync<ToolbotWeaponSkillDef>((object)"RoR2/Base/Toolbot/ToolbotBodyFireGrenadeLauncher.asset").WaitForCompletion(); public static ConfigEntry<bool> SawEnableConfig; public static ConfigEntry<bool> SawEnableFly; public static ConfigEntry<float> SawMoveVector; public static ConfigEntry<float> SawMoveVelocityVector; public static ConfigEntry<float> SawFlyVector; public static ConfigEntry<float> SawFlyJumpVector; public static ConfigEntry<float> SawFlyJumpDownVector; public static ConfigEntry<float> SawStuck; public static ConfigEntry<float> SawStuckJump; public static ConfigEntry<float> SawStuckFall; public static ConfigEntry<bool> SawEnableBarrier; public static ConfigEntry<float> SawBarrierChanceMode; public static ConfigEntry<float> SawBarrierChance; public static ConfigEntry<float> SawBarrierPercentage; public static ConfigEntry<bool> RocketEnableConfig; public static ConfigEntry<bool> RocketEnableVelocityChange; public static ConfigEntry<float> RocketVelocityChange; public static ConfigEntry<bool> RocketEnableDamageChange; public static ConfigEntry<float> RocketDamageChange; public static ConfigEntry<bool> RocketEnableJump; public static ConfigEntry<bool> RocketJumpMode; public static ConfigEntry<float> RocketJumpFlatMultiplier; public static ConfigEntry<float> RocketJumpMultiplier; public static ConfigEntry<float> RocketJumpReduction; public static ConfigEntry<bool> RocketEnableHoming; public static ConfigEntry<float> RocketHomingAngle; public static ConfigEntry<bool> RocketEnablePowerScaling; public static ConfigEntry<float> RocketDamageScaling; public static ConfigEntry<float> RocketRadiusScaling; public static ConfigEntry<float> RocketVelocityScaling; public static ConfigEntry<float> RocketJumpScaling; public static ConfigEntry<bool> RocketEnableFinalHoming; public static ConfigEntry<bool> RocketEnableFinalVelocityIncrease; public static ConfigEntry<float> RocketFinalVelocity; public static ConfigEntry<bool> RocketEnableCooldownOnAttackSpeed; public static ConfigEntry<bool> RocketEnableRestockOnRelease; public static ConfigEntry<bool> RocketEnableRestockOnDestroy; public static ConfigEntry<bool> SpearEnableConfig; public static ConfigEntry<bool> SpearEnableMove; public static ConfigEntry<float> SpearHorizontalMultiplier; public static ConfigEntry<float> SpearVerticalMultiplier; public static ConfigEntry<bool> NailgunEnableConfig; public static ConfigEntry<bool> NailgunEnableMove; public static ConfigEntry<float> NailgunHorizontalMultiplier; public static ConfigEntry<float> NailgunVerticalMultiplier; private void Awake() { //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_0618: Expected O, but got Unknown //IL_061e: Unknown result type (might be due to invalid IL or missing references) //IL_0628: Expected O, but got Unknown //IL_062e: Unknown result type (might be due to invalid IL or missing references) //IL_0638: Expected O, but got Unknown //IL_063e: Unknown result type (might be due to invalid IL or missing references) //IL_0648: Expected O, but got Unknown //IL_064e: Unknown result type (might be due to invalid IL or missing references) //IL_0658: Expected O, but got Unknown //IL_065e: Unknown result type (might be due to invalid IL or missing references) //IL_0668: Expected O, but got Unknown //IL_066e: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Expected O, but got Unknown //IL_067e: Unknown result type (might be due to invalid IL or missing references) //IL_0688: Expected O, but got Unknown //IL_068e: Unknown result type (might be due to invalid IL or missing references) //IL_0698: Expected O, but got Unknown //IL_069e: Unknown result type (might be due to invalid IL or missing references) //IL_06a8: Expected O, but got Unknown //IL_06ae: Unknown result type (might be due to invalid IL or missing references) //IL_06b3: Unknown result type (might be due to invalid IL or missing references) //IL_06be: Unknown result type (might be due to invalid IL or missing references) //IL_06c9: Unknown result type (might be due to invalid IL or missing references) //IL_06d9: Expected O, but got Unknown //IL_06d4: Unknown result type (might be due to invalid IL or missing references) //IL_06de: Expected O, but got Unknown //IL_06e4: Unknown result type (might be due to invalid IL or missing references) //IL_06ee: Expected O, but got Unknown //IL_06f4: Unknown result type (might be due to invalid IL or missing references) //IL_06fe: Expected O, but got Unknown //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_070e: Expected O, but got Unknown //IL_0714: Unknown result type (might be due to invalid IL or missing references) //IL_071e: Expected O, but got Unknown //IL_0724: Unknown result type (might be due to invalid IL or missing references) //IL_072e: Expected O, but got Unknown //IL_0734: Unknown result type (might be due to invalid IL or missing references) //IL_073e: Expected O, but got Unknown //IL_0744: Unknown result type (might be due to invalid IL or missing references) //IL_074e: Expected O, but got Unknown //IL_0754: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Expected O, but got Unknown //IL_0764: Unknown result type (might be due to invalid IL or missing references) //IL_076e: Expected O, but got Unknown //IL_0774: Unknown result type (might be due to invalid IL or missing references) //IL_077e: Expected O, but got Unknown //IL_0784: Unknown result type (might be due to invalid IL or missing references) //IL_078e: Expected O, but got Unknown //IL_0794: Unknown result type (might be due to invalid IL or missing references) //IL_079e: Expected O, but got Unknown //IL_07a4: Unknown result type (might be due to invalid IL or missing references) //IL_07ae: Expected O, but got Unknown //IL_07b4: Unknown result type (might be due to invalid IL or missing references) //IL_07be: Expected O, but got Unknown //IL_07c4: Unknown result type (might be due to invalid IL or missing references) //IL_07ce: Expected O, but got Unknown //IL_07d4: Unknown result type (might be due to invalid IL or missing references) //IL_07de: Expected O, but got Unknown //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07ee: Expected O, but got Unknown //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_07fe: Expected O, but got Unknown //IL_0804: Unknown result type (might be due to invalid IL or missing references) //IL_080e: Expected O, but got Unknown //IL_0814: Unknown result type (might be due to invalid IL or missing references) //IL_081e: Expected O, but got Unknown //IL_0824: Unknown result type (might be due to invalid IL or missing references) //IL_082e: Expected O, but got Unknown //IL_0834: Unknown result type (might be due to invalid IL or missing references) //IL_083e: Expected O, but got Unknown //IL_0844: Unknown result type (might be due to invalid IL or missing references) //IL_084e: Expected O, but got Unknown //IL_0854: Unknown result type (might be due to invalid IL or missing references) //IL_085e: Expected O, but got Unknown //IL_0864: Unknown result type (might be due to invalid IL or missing references) //IL_086e: Expected O, but got Unknown //IL_0874: Unknown result type (might be due to invalid IL or missing references) //IL_087e: Expected O, but got Unknown //IL_0884: Unknown result type (might be due to invalid IL or missing references) //IL_088e: Expected O, but got Unknown //IL_0894: Unknown result type (might be due to invalid IL or missing references) //IL_089e: Expected O, but got Unknown //IL_08a4: Unknown result type (might be due to invalid IL or missing references) //IL_08ae: Expected O, but got Unknown //IL_08b4: Unknown result type (might be due to invalid IL or missing references) //IL_08be: Expected O, but got Unknown //IL_08c4: Unknown result type (might be due to invalid IL or missing references) //IL_08ce: Expected O, but got Unknown //IL_08d6: Unknown result type (might be due to invalid IL or missing references) //IL_08e0: Expected O, but got Unknown //IL_08e8: Unknown result type (might be due to invalid IL or missing references) //IL_08f2: Expected O, but got Unknown //IL_08fa: Unknown result type (might be due to invalid IL or missing references) //IL_0904: Expected O, but got Unknown //IL_090c: Unknown result type (might be due to invalid IL or missing references) //IL_0916: Expected O, but got Unknown SawEnableConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Power-Saw", "Enable config", false, "Enable config?"); SawEnableFly = ((BaseUnityPlugin)this).Config.Bind<bool>("Power-Saw", "Enable flying", true, "Enable flying function?"); SawMoveVector = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Flying horizontal speed", 0.01f, "Control the horizontal fly speed from your aim direction"); SawMoveVelocityVector = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Flying horizontal velocity addition", 0.2f, "Control the horizontal velocity increase from your aim direction"); SawFlyVector = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Flying vertical velocity addition", 0.1f, "Control the vertical velocity increase when using saw"); SawFlyJumpVector = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Flying vertical velocity addition on jump", 0.3f, "Control the vertical velocity increase when using saw and holding jump key"); SawFlyJumpDownVector = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Flying vertical velocity addition on jump and fall", 0.4f, "Control the vertical velocity increase when using saw and holding jump key while falling"); SawStuck = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Vertical velocity increase on enemy hit", 0.2f, "Control the vertical velocity increase when hitting an enemy midair"); SawStuckJump = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Vertical velocity increase on enemy hit on jump", 1f, "Control the vertical velocity increase when hitting an enemy midair while holding jump button"); SawStuckFall = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Vertical velocity increase on enemy hit on fall", 1f, "Control the vertical velocity increase when hitting an enemy midair while falling"); SawEnableBarrier = ((BaseUnityPlugin)this).Config.Bind<bool>("Power-Saw", "Enable barrier on hit", true, "Enable barrier on hit function?"); SawBarrierPercentage = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Barrior on hit percentage", 1f, "Control the barrier percentage"); SawBarrierChance = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Barrior on hit chance", 12f, "Control the chance of getting barrier"); SawBarrierChanceMode = ((BaseUnityPlugin)this).Config.Bind<float>("Power-Saw", "Barrior on hit chance mode", 2f, "1: Flat chance\n2: Chance based on maximum health\n3: Chance based on current health"); RocketEnableConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable config", false, "Enable config?"); RocketEnableVelocityChange = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable scrap velocity change", true, "Enable scrap velocity change?"); RocketVelocityChange = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Scrap velocity change", 0.4f, "Control the scrap velocity change as a multiplier"); RocketEnableDamageChange = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable scrap damage change", false, "Enable scrap damage multiplier change?"); RocketDamageChange = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Scrap damage change", 1f, "Control the scrap damage change as a multiplier"); RocketEnableJump = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable rocket jump", true, "Enable rocket jump?"); RocketJumpMode = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Flat rocket jump", true, "Velocity addition will not be based on the distance between explosion and the player"); RocketJumpFlatMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Flat rocket jump multiplier", 5f, "Control flat rocket jump velocity multiplier"); RocketJumpMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Rocket jump multiplier", 1f, "Control non-flat rocket jump velocity multiplier"); RocketJumpReduction = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Rocket jump reduction on ground", 3f, "Control the rocket jump reduction power on ground"); RocketEnableHoming = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable scrap homing", true, "Enable scrap homing towards your cursor position?"); RocketHomingAngle = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Scrap homing angle", 0.5f, "Control the angle of scrap homing"); RocketEnablePowerScaling = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable power scaling", true, "Enable scrap power increase the longer it is midair?"); RocketDamageScaling = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Damage increase", 200f, "Control base damage percentage increase per second"); RocketRadiusScaling = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Radius increase", 2f, "Control radius increase per second"); RocketVelocityScaling = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Velocity increase", 0f, "Control velocity increase per second"); RocketJumpScaling = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Rocket jump power increase", 0.1f, "Control rocket jump power increase per second"); RocketEnableFinalHoming = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable unguiding on fire release", true, "Enable scrap unguiding on fire button release?"); RocketEnableFinalVelocityIncrease = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable velocity increase on fire release", true, "Enable velocity increase on fire release?"); RocketFinalVelocity = ((BaseUnityPlugin)this).Config.Bind<float>("Scrap Launcher", "Velocity increase on fire release", 3f, "Control velocity increase multiplier on fire release"); RocketEnableCooldownOnAttackSpeed = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable cooldown attack speed scaling", true, "Enable cooldown to scale from attack speed?"); RocketEnableRestockOnRelease = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable restock on fire release", false, "Enable scrap restock on fire release?"); RocketEnableRestockOnDestroy = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Launcher", "Enable restock on scrap explosion", false, "Enable scrap restock on its explosion?"); SpearEnableConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Rebar Puncher", "Enable config", false, "Enable config?"); SpearEnableMove = ((BaseUnityPlugin)this).Config.Bind<bool>("Rebar Puncher", "Enable function", true, "Enable velocity increase on fire?"); SpearHorizontalMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Rebar Puncher", "Horizontal velocity multiplier", 3f, "Control the horizontal velocity multiplier"); SpearVerticalMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Rebar Puncher", "Vertical velocity multiplier", 1f, "Control the vertical velocity multiplier"); NailgunEnableConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Auto-Nailgun", "Enable config", false, "Enable config?"); NailgunEnableMove = ((BaseUnityPlugin)this).Config.Bind<bool>("Auto-Nailgun", "Enable function", true, "Enable velocity increase on fire?"); NailgunHorizontalMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Auto-Nailgun", "Horizontal velocity multiplier", -0.08f, "Control the horizontal velocity multiplier"); NailgunVerticalMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Auto-Nailgun", "Vertical velocity multiplier", -0.04f, "Control the vertical velocity multiplier"); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SawEnableConfig)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SawEnableFly)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawMoveVector)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawMoveVelocityVector)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawFlyVector)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawFlyJumpVector)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawFlyJumpDownVector)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SawEnableBarrier)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawBarrierPercentage)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SawBarrierChance)); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(SawBarrierChanceMode, new StepSliderConfig { min = 1f, max = 3f, increment = 1f })); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableConfig)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableVelocityChange)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketVelocityChange)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableDamageChange)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketDamageChange)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableJump)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketJumpMode)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketJumpFlatMultiplier)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketJumpMultiplier)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketJumpReduction)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableHoming)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketHomingAngle)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnablePowerScaling)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketDamageScaling)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketRadiusScaling)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketVelocityScaling)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketJumpScaling)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableFinalHoming)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableFinalVelocityIncrease)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(RocketFinalVelocity)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableCooldownOnAttackSpeed)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableRestockOnRelease)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(RocketEnableRestockOnDestroy)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SpearEnableConfig)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SpearEnableMove)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SpearHorizontalMultiplier)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(SpearVerticalMultiplier)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(NailgunEnableConfig)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(NailgunEnableMove)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(NailgunHorizontalMultiplier)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(NailgunVerticalMultiplier)); FireBuzzsaw.FixedUpdate += new hook_FixedUpdate(Fly); FireGrenadeLauncher.OnEnter += new hook_OnEnter(ModifyProjectile); FireNailgun.FixedUpdate += new hook_FixedUpdate(Recoil); FireSpear.FireBullet += new hook_FireBullet(Pierce); } private void Recoil(orig_FixedUpdate orig, FireNailgun self) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (NailgunEnableMove.Value && !((EntityState)self).characterMotor.isGrounded) { float num = ConfigFloat(NailgunHorizontalMultiplier, NailgunEnableConfig); float num2 = ConfigFloat(NailgunVerticalMultiplier, NailgunEnableConfig); Vector3 aimDirection = ((EntityState)self).inputBank.aimDirection; Vector3 normalized = ((Vector3)(ref aimDirection)).normalized; CharacterMotor characterMotor = ((EntityState)self).characterMotor; characterMotor.velocity += new Vector3(normalized.x * num, normalized.y * num2, normalized.z * num) * ((EntityState)self).characterBody.moveSpeed; } } private void ModifyProjectile(orig_OnEnter orig, FireGrenadeLauncher self) { orig.Invoke(self); if (RocketEnableCooldownOnAttackSpeed.Value) { if (((IToolbotPrimarySkillState)self).currentHand == 0 || ((IToolbotPrimarySkillState)self).currentHand == -1) { ((EntityState)self).skillLocator.primary.RunRecharge(ConvertAmplificationPercentageIntoReductionPercentage(((BaseState)self).attackSpeedStat - 1f, ((EntityState)self).skillLocator.primary.cooldownRemaining)); } if (((IToolbotPrimarySkillState)self).currentHand == 1) { ((EntityState)self).skillLocator.secondary.RunRecharge(ConvertAmplificationPercentageIntoReductionPercentage(((BaseState)self).attackSpeedStat - 1f, ((EntityState)self).skillLocator.secondary.cooldownRemaining)); } } if (!Object.op_Implicit((Object)(object)((GenericProjectileBaseState)self).projectilePrefab.GetComponent<RocketComponent>())) { RocketComponent rocketComponent = ((GenericProjectileBaseState)self).projectilePrefab.AddComponent<RocketComponent>(); } } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float ConfigFloat(ConfigEntry<float> value, ConfigEntry<bool> enable) { if (enable.Value) { return value.Value; } return (float)((ConfigEntryBase)value).DefaultValue; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int ConfigInt(ConfigEntry<int> value, ConfigEntry<bool> enable) { if (enable.Value) { return value.Value; } return (int)((ConfigEntryBase)value).DefaultValue; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool ConfigBool(ConfigEntry<bool> value, ConfigEntry<bool> enable) { if (enable.Value) { return value.Value; } return (bool)((ConfigEntryBase)value).DefaultValue; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float ConvertAmplificationPercentageIntoReductionPercentage(float amplificationPercentage, float maxChance) { return (1f - maxChance / (maxChance + amplificationPercentage)) * maxChance; } private void Pierce(orig_FireBullet orig, FireSpear self, Ray aimRay) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_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_0084: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, aimRay); if (SpearEnableMove.Value && !((EntityState)self).characterMotor.isGrounded && ((EntityState)self).inputBank.sprint.down) { float num = ConfigFloat(SpearHorizontalMultiplier, SpearEnableConfig); float num2 = ConfigFloat(SpearVerticalMultiplier, SpearEnableConfig); Vector3 aimDirection = ((EntityState)self).inputBank.aimDirection; Vector3 normalized = ((Vector3)(ref aimDirection)).normalized; CharacterMotor characterMotor = ((EntityState)self).characterMotor; characterMotor.velocity += new Vector3(normalized.x * num, normalized.y * num2, normalized.z * num) * ((EntityState)self).characterBody.moveSpeed; } } private void Fly(orig_FixedUpdate orig, FireBuzzsaw self) { //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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_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_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: 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_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (SawEnableFly.Value && Object.op_Implicit((Object)(object)((EntityState)self).characterMotor)) { Vector3 aimDirection = ((EntityState)self).inputBank.aimDirection; Vector3 normalized = ((Vector3)(ref aimDirection)).normalized; float num = ConfigFloat(SawFlyVector, SawEnableConfig); if (((EntityState)self).inputBank.jump.down) { num = ((!(((EntityState)self).characterMotor.velocity.y < 0f)) ? ConfigFloat(SawFlyJumpVector, SawEnableConfig) : ConfigFloat(SawFlyJumpDownVector, SawEnableConfig)); } if (((BaseToolbotPrimarySkillState)self).isInDualWield) { num /= 2f; } aimDirection = ((EntityState)self).inputBank.aimDirection; float num2 = ((Vector3)(ref aimDirection)).normalized.x * ConfigFloat(SawMoveVelocityVector, SawEnableConfig); aimDirection = ((EntityState)self).inputBank.aimDirection; float num3 = ((Vector3)(ref aimDirection)).normalized.z * ConfigFloat(SawMoveVelocityVector, SawEnableConfig); CharacterMotor characterMotor = ((EntityState)self).characterMotor; characterMotor.velocity += new Vector3(num2, num, num3); CharacterMotor characterMotor2 = ((EntityState)self).characterMotor; characterMotor2.rootMotion += normalized * ConfigFloat(SawMoveVector, SawEnableConfig) * ((EntityState)self).characterBody.moveSpeed; } if (SawEnableBarrier.Value && self.hitOverlapLastTick) { if (!((BaseState)self).isGrounded) { float num4 = 0f; num4 = ((((EntityState)self).characterMotor.velocity.y < 0f) ? ConfigFloat(SawStuckFall, SawEnableConfig) : ((!((EntityState)self).inputBank.jump.down) ? ConfigFloat(SawStuck, SawEnableConfig) : ConfigFloat(SawStuckJump, SawEnableConfig))); CharacterMotor characterMotor3 = ((EntityState)self).characterMotor; characterMotor3.velocity += new Vector3(0f, num4, 0f); } float num5 = 0f; float num6 = ConfigFloat(SawBarrierChanceMode, SawEnableConfig); float num7 = num6; num5 = ((num7 == 1f) ? ConfigFloat(SawBarrierChance, SawEnableConfig) : ((num7 == 3f) ? ((((EntityState)self).characterBody.healthComponent.health + ((EntityState)self).characterBody.healthComponent.shield) * (ConfigFloat(SawBarrierChance, SawEnableConfig) / 10f) / ((EntityState)self).characterBody.healthComponent.barrier) : ((num7 != 2f) ? ((((EntityState)self).characterBody.healthComponent.fullHealth + ((EntityState)self).characterBody.healthComponent.fullShield) * (ConfigFloat(SawBarrierChance, SawEnableConfig) / 10f) / ((EntityState)self).characterBody.healthComponent.barrier) : ((((EntityState)self).characterBody.healthComponent.fullHealth + ((EntityState)self).characterBody.healthComponent.fullShield) * (ConfigFloat(SawBarrierChance, SawEnableConfig) / 10f) / ((EntityState)self).characterBody.healthComponent.barrier)))); if (Util.CheckRoll(num5, 0f, (CharacterMaster)null)) { ((EntityState)self).characterBody.healthComponent.AddBarrierAuthority(((EntityState)self).characterBody.maxHealth * ConfigFloat(SawBarrierPercentage, SawEnableConfig) / 100f); } } } }