Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of NegativeRegenFix v1.0.0
NegativeRegenFix.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using IL.RoR2; using Mono.Cecil.Cil; using MonoMod.Cil; using RoR2; 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(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("NegativeRegenFix")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("NegativeRegenFix")] [assembly: AssemblyTitle("NegativeRegenFix")] [assembly: AssemblyVersion("1.0.0.0")] namespace NegativeRegenFix; [BepInPlugin("com.HouseOfFruits.NegativeRegenFix", "NegativeRegenFix", "1.0.0")] public class NegativeRegenFix : BaseUnityPlugin { public const string guid = "com.HouseOfFruits.NegativeRegenFix"; public const string teamName = "HouseOfFruits"; public const string modName = "NegativeRegenFix"; public const string version = "1.0.0"; public static PluginInfo PInfo { get; private set; } public void Awake() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown CharacterBody.RecalculateStats += new Manipulator(RegenMultiplierFix); } private static void RegenMultiplierFix(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_011f: 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_0143: 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) ILCursor val = new ILCursor(il); val.GotoNext((MoveType)2, new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseRegen"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelRegen") }); int regenMultLocation = 72; int endRegenLocation = 73; val.GotoNext((MoveType)2, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref regenMultLocation) }); endRegenLocation = regenMultLocation + 1; val.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, endRegenLocation) }); val.Emit(OpCodes.Ldloc, endRegenLocation); val.Emit(OpCodes.Ldloc, regenMultLocation); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, float, CharacterBody, float>>((Func<float, float, CharacterBody, float>)delegate(float currentRegen, float regenMult, CharacterBody body) { if (body.HasBuff(Buffs.AffixEcho) || body.HasBuff(Buffs.EliteEarth)) { return 0f; } float num = body.baseRegen + body.levelRegen * (body.level - 1f); float num2 = currentRegen / regenMult - num; float num3 = num + Mathf.Abs(num) * (regenMult - 1f) + num2 * regenMult; if (body.HasBuff(Buffs.TonicBuff) && num3 < 0f) { num3 += Mathf.Abs(num3) * 3f; num3 /= 4f; } return num3; }); val.Emit(OpCodes.Stloc, endRegenLocation); } }