Due to update 2.4.3, some mods may no longer function. FixedConfig may be necessary.
Decompiled source of RollBoost v1.0.1
RollBoost.dll
Decompiled 8 months agousing System; using 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 BepInEx.Logging; using BoplFixedMath; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")] [assembly: AssemblyCompany("RollBoost")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Adds Roll speed boosting and configs")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("RollBoost")] [assembly: AssemblyTitle("RollBoost")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RollBoost { public static class PluginInfo { public const string PLUGIN_GUID = "RollBoost"; public const string PLUGIN_NAME = "RollBoost"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace NewPlugin { [BepInPlugin("com.Starbox614.RollBoost", "RollBoost", "1.0.0")] public class Plugin : BaseUnityPlugin { [HarmonyReversePatch(/*Could not decode attribute arguments.*/)] [HarmonyPatch(typeof(Roll), "OldUpdate")] private class RollOldUpdatePatch { private static bool Prefix(ref Roll __instance, ref Fix simDeltaTime, ref PlayerPhysics ___playerPhysics, ref bool ___isCharging, ref Fix ___secondsCharged, ref PlayerInfo ___playerInfo, ref bool ___jumpButtonHasBeenUp, ref Player ___player, ref Fix ___timeSinceRelease, ref Fix ___groundedSpeed, ref PlayerBody ___body, ref Fix ___chargeTime, ref bool ___waitingToRelease, ref Fix ___dashTime, ref bool ___hasCharged, ref bool ___isShortJumping, ref SpriteAnimator ___rollAnimator, ref AnimationData ___animData, ref SpriteAnimator ___animator, ref GameObject ___rollWave, ref Ability ___ability, ref Fix ___topSpeed, ref Fix ___MaxSpeed) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: 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_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: 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_013f: 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_0150: 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_00d2: 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_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_022a: 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_017f: 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_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Invalid comparison between Unknown and I4 //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Unknown result type (might be due to invalid IL or missing references) if (___playerPhysics.IsGrounded() && ((Object)(object)___playerPhysics.getAttachedGround() == (Object)null || !___playerPhysics.getAttachedGround().ThisGameObject().activeInHierarchy)) { ___playerPhysics.UnGround(true, true); __instance.ExitAbility(default(AbilityExitInfo)); return false; } if (___isCharging) { ___secondsCharged += GameTime.FixedDeltaTime(___playerInfo.playerId, simDeltaTime); if (___jumpButtonHasBeenUp && ___player.JumpButton_isDown()) { ___playerPhysics.Jump(); AudioManager.Get().Play("slimeJump" + ___player.Id); __instance.ExitAbility(default(AbilityExitInfo)); return false; } } else { ___timeSinceRelease += GameTime.FixedDeltaTime(___playerInfo.playerId, simDeltaTime); if (___jumpButtonHasBeenUp && ___player.JumpButton_isDown()) { ___topSpeed += (Fix)configSpeedIncrease.Value; if (___topSpeed > (Fix)configMaxSpeed.Value) { Vec2 val = ___groundedSpeed * ___body.right; ___playerPhysics.UnGround(true, true); ___body.selfImposedVelocity = val * (Fix)configReleaseKeepRatio.Value; __instance.ExitAbility(default(AbilityExitInfo)); return false; } } else { Log.LogInfo((object)((object)(Fix)(ref ___topSpeed)).ToString()); if (___topSpeed > ___MaxSpeed) { ___topSpeed -= (Fix)configSpeedDecrease.Value; if (___topSpeed < ___MaxSpeed) { ___topSpeed = ___MaxSpeed; } } } } if (___isCharging && !___player.AbilityButtonIsDown(___playerInfo.AbilityButtonUsedIndex012)) { if (___secondsCharged >= ___chargeTime) { ___waitingToRelease = true; ___body.AttachRope((RopeBody)null, ___body.topAttachment); } else { if (___playerPhysics.IsGrounded()) { __instance.ExitAbility(new AbilityExitInfo { justlanded = true }); return false; } RollShortJump(__instance); } } if (___timeSinceRelease > ___dashTime) { __instance.ExitAbility(default(AbilityExitInfo)); return false; } if (!___hasCharged && ___secondsCharged >= ___chargeTime && !___isShortJumping) { ___hasCharged = true; if ((int)___player.RumbleState == 3) { ___player.Rumble((Rumble)0); } ___rollAnimator.beginAnimation(___animData.GetAnimation("bigWave")); ___animator.beginAnimation(___animData.GetAnimation("rollFast")); AudioManager.Get().Play("rollReady"); } if (___waitingToRelease && ___playerPhysics.IsGrounded()) { RollReleaseDash(__instance); } if (___playerPhysics.IsGrounded()) { RollMove(__instance, ___groundedSpeed, simDeltaTime); } ___rollWave.SetActive(___playerPhysics.IsGrounded() && !___ability.KillPlayersOnContact); return false; } [HarmonyReversePatch(/*Could not decode attribute arguments.*/)] [HarmonyPatch(typeof(Roll), "ReleaseDash")] public static void RollReleaseDash(object instance) { throw new NotImplementedException("It's a stub"); } [HarmonyReversePatch(/*Could not decode attribute arguments.*/)] [HarmonyPatch(typeof(Roll), "Move")] public static void RollMove(object instance, Fix speed, Fix simDeltaTime) { throw new NotImplementedException("It's a stub"); } [HarmonyReversePatch(/*Could not decode attribute arguments.*/)] [HarmonyPatch(typeof(Roll), "ShortJump")] public static void RollShortJump(object instance) { throw new NotImplementedException("It's a stub"); } } [HarmonyReversePatch(/*Could not decode attribute arguments.*/)] [HarmonyPatch(typeof(Roll), "Awake")] private class RollAwakePatch { private static void Postfix(ref Fix ___MaxSpeed) { //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) ___MaxSpeed = (Fix)configDefaultSpeed.Value; } } internal static ManualLogSource Log; public Harmony harmony = new Harmony("com.Starbox614.RollBoost"); private static ConfigEntry<float> configDefaultSpeed; private static ConfigEntry<float> configSpeedIncrease; private static ConfigEntry<float> configSpeedDecrease; private static ConfigEntry<float> configMaxSpeed; private static ConfigEntry<float> configReleaseKeepRatio; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.Starbox614.RollBoost is loaded!"); Log = ((BaseUnityPlugin)this).Logger; configDefaultSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("main", "Default speed", 500f, "default rolling speed"); configMaxSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("main", "Max speed", 1500f, "max rolling speed before you fly out of the roll"); configSpeedIncrease = ((BaseUnityPlugin)this).Config.Bind<float>("main", "Speed boost", 50f, "amount boosting increases speed per frame"); configSpeedDecrease = ((BaseUnityPlugin)this).Config.Bind<float>("main", "Speed loss", 25f, "amount speed decreases when not boosting, per frame"); configReleaseKeepRatio = ((BaseUnityPlugin)this).Config.Bind<float>("main", "Release kept speed multiplier", 0.25f, "multiplier for the amount of speed kept when exceeding max speed and exiting the roll"); harmony.PatchAll(); } } }