Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Bubbet Bhop Itemless v1.0.10
BubbetBhopItemless.dll
Decompiled 2 weeks 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 EntityStates; using IL.EntityStates; using IL.RoR2; using IL.RoR2.Projectile; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using RoR2; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BubbetBhopItemless")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BubbetBhopItemless")] [assembly: AssemblyTitle("BubbetBhopItemless")] [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 BubbetBhopItemless { public static class AutoBhop { [CompilerGenerated] private static class <>O { public static hook_GatherInputs <0>__GenericCharacterMain_GatherInputs; } public static ConfigEntry<bool> EnableAutoBhop; public static void Init(ConfigFile config) { //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_0042: Expected O, but got Unknown EnableAutoBhop = config.Bind<bool>("General", "Enable AutoBhop", true, "Hold down [JUMP] to auto jump instead of timing jumps for bhops."); if (EnableAutoBhop.Value) { object obj = <>O.<0>__GenericCharacterMain_GatherInputs; if (obj == null) { hook_GatherInputs val = GenericCharacterMain_GatherInputs; <>O.<0>__GenericCharacterMain_GatherInputs = val; obj = (object)val; } GenericCharacterMain.GatherInputs += (hook_GatherInputs)obj; } } private static void GenericCharacterMain_GatherInputs(orig_GatherInputs orig, GenericCharacterMain self) { orig.Invoke(self); if (((BaseCharacterMain)self).hasInputBank && ((BaseState)self).isGrounded) { self.jumpInputReceived = ((EntityState)self).inputBank.jump.down; } } } public static class BubbetBhop { private delegate Vector3 NewMove(Vector3 velocityFromMoveTowards, Vector3 velocityOld, Vector3 target, float deltaTime, CharacterMotor self, CharacterBody body, bool disableAirControlUntilCollision); [CompilerGenerated] private static class <>O { public static Manipulator <0>__GripState_FixedUpdateBehavior; public static Manipulator <1>__GenericCharacterMain_ApplyJumpVelocity; public static Manipulator <2>__CharacterMotor_PreMove; } public static ConfigEntry<float> BaseAirControl; public static ConfigEntry<int> ScalingFunction; public static ConfigEntry<float> ScalingFunctionValA; private static Func<float, float, int, float, float>[] ScalingFuncs = new Func<float, float, int, float, float>[3] { (float @base, float added, int count, float _) => @base + (float)(count - 1) * added, (float @base, float added, int count, float arg1) => @base + Mathf.Pow((float)count, arg1) * added, (float @base, float added, int count, float arg1) => arg1 / ((float)count - added) + @base }; public static void Init(ConfigFile config) { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //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) //IL_00b4: Expected O, but got Unknown BaseAirControl = config.Bind<float>("General", "Base Air Control", 3f, "Base air control, more = easier to turn and still gain speed."); ScalingFunction = config.Bind<int>("Advanced", "Scaling Function", 0, "Changes the scaling function of the bunny feet: 0 = linear(base + (count-1)*added), 1 = power law (base + Mathf.Pow(count, arg1) * added), 2 = Rectangular Hyperbola (arg1 / (count-added) + base)"); ScalingFunctionValA = config.Bind<float>("Advanced", "Scaling Function Arg1", 0.5f, "Changes the first arbitrary value in scaling function: ex: power law's exponent (arg1)"); object obj = <>O.<0>__GripState_FixedUpdateBehavior; if (obj == null) { Manipulator val = GripState_FixedUpdateBehavior; <>O.<0>__GripState_FixedUpdateBehavior = val; obj = (object)val; } GripState.FixedUpdateBehavior += (Manipulator)obj; object obj2 = <>O.<1>__GenericCharacterMain_ApplyJumpVelocity; if (obj2 == null) { Manipulator val2 = GenericCharacterMain_ApplyJumpVelocity; <>O.<1>__GenericCharacterMain_ApplyJumpVelocity = val2; obj2 = (object)val2; } GenericCharacterMain.ApplyJumpVelocity += (Manipulator)obj2; object obj3 = <>O.<2>__CharacterMotor_PreMove; if (obj3 == null) { Manipulator val3 = CharacterMotor_PreMove; <>O.<2>__CharacterMotor_PreMove = val3; obj3 = (object)val3; } CharacterMotor.PreMove += (Manipulator)obj3; } private static void GripState_FixedUpdateBehavior(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0089: 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) ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchCall<Vector3>(x, "op_Multiply"), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1) }); val.Index += 2; val.Remove(); val.Emit(OpCodes.Ldc_I4_0); } private static void CharacterMotor_PreMove(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: 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_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0134: 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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_014c: 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_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[6] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterMotor>(x, "velocity"), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 2), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 1), (Instruction x) => ILPatternMatchingExt.MatchMul(x) }); val.Index += 7; val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldfld, typeof(CharacterMotor).GetRuntimeField("velocity")); val.Emit(OpCodes.Ldloc_2); val.Emit(OpCodes.Ldarg_1); val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldfld, typeof(CharacterMotor).GetField("body", BindingFlags.Instance | BindingFlags.NonPublic)); val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldfld, typeof(CharacterMotor).GetField("disableAirControlUntilCollision", BindingFlags.Instance | BindingFlags.Public)); val.EmitDelegate<NewMove>((NewMove)NewMoveMeth); } private static void GenericCharacterMain_ApplyJumpVelocity(ILContext il) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00c1: 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_013e: 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_014c: 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_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) Func<Vector3, CharacterMotor, CharacterBody, Vector3> func = delegate(Vector3 vector, CharacterMotor cm, CharacterBody cb) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_004c: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) Vector3 result = vector + Vector3.down * vector.y; Vector3 val2 = cm.velocity + Vector3.down * cm.velocity.y; if (((Vector3)(ref val2)).sqrMagnitude > ((Vector3)(ref result)).sqrMagnitude) { result = val2; } result.y = vector.y; return result; }; ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0), (Instruction x) => ILPatternMatchingExt.MatchStfld<CharacterMotor>(x, "velocity") }); val.Index += 2; val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<Vector3, CharacterMotor, CharacterBody, Vector3>>(func); val.GotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 2), (Instruction x) => ILPatternMatchingExt.MatchStfld<CharacterMotor>(x, "velocity") }); val.Index += 2; val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<Vector3, CharacterMotor, CharacterBody, Vector3>>(func); } private static Vector3 NewMoveMeth(Vector3 velocityFromMoveTowards, Vector3 velocityOld, Vector3 target, float deltaTime, CharacterMotor self, CharacterBody body, bool disableAirControlUntilCollision) { //IL_008b: 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_008d: 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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) if (!disableAirControlUntilCollision && !((BaseCharacterController)self).Motor.GroundingStatus.IsStableOnGround) { Vector3 val = target; if (!self.isFlying) { val.y = 0f; } Vector3 normalized = ((Vector3)(ref val)).normalized; float wishspeed = self.walkSpeed * ((Vector3)(ref normalized)).magnitude; return Accelerate(velocityOld, normalized, wishspeed, ScalingFuncs[ScalingFunction.Value](BaseAirControl.Value, 1.5f, 1, ScalingFunctionValA.Value), self.acceleration, deltaTime); } return velocityFromMoveTowards; } private static Vector3 Accelerate(Vector3 velocity, Vector3 wishdir, float wishspeed, float speedLimit, float acceleration, float deltaTime) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (speedLimit > 0f && wishspeed > speedLimit) { wishspeed = speedLimit; } float num = Vector3.Dot(velocity, wishdir); float num2 = wishspeed - num; if (num2 <= 0f) { return velocity; } float num3 = acceleration * deltaTime * wishspeed; if (num3 > num2) { num3 = num2; } return velocity + wishdir * num3; } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void LogDebug(object data) { _logSource.LogDebug(data); } internal static void LogError(object data) { _logSource.LogError(data); } internal static void LogFatal(object data) { _logSource.LogFatal(data); } internal static void LogInfo(object data) { _logSource.LogInfo(data); } internal static void LogMessage(object data) { _logSource.LogMessage(data); } internal static void LogWarning(object data) { _logSource.LogWarning(data); } } [BepInPlugin("kruumy.Bubbet_Bhop_Itemless", "Bubbet_Bhop_Itemless", "1.0.10")] public class Main : BaseUnityPlugin { public const string PluginGUID = "kruumy.Bubbet_Bhop_Itemless"; public const string PluginAuthor = "kruumy"; public const string PluginName = "Bubbet_Bhop_Itemless"; public const string PluginVersion = "1.0.10"; public void Awake() { Log.Init(((BaseUnityPlugin)this).Logger); BubbetBhop.Init(((BaseUnityPlugin)this).Config); Log.LogInfo("BubbetBhop Initialized"); AutoBhop.Init(((BaseUnityPlugin)this).Config); Log.LogInfo("AutoBhop Initialized"); Log.LogInfo("Awake done."); } } }