Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of BackstabRework v1.0.4
BackstabRework.dll
Decompiled a year 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 IL.RoR2; using Mono.Cecil.Cil; using MonoMod.Cil; using R2API; using R2API.Utils; 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.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("BackstabRework")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BackstabRework")] [assembly: AssemblyTitle("BackstabRework")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace BackstabRework; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.BackstabRework", "Backstab Rework", "1.0.4")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class BackstabRework : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__2_1; public static Func<int, CharacterBody, int> <>9__2_2; public static Manipulator <>9__2_0; internal void <Awake>b__2_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_0047: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "ConvertCritChanceToCritDamage") }); val.Index += 2; val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<int, CharacterBody, int>>((Func<int, CharacterBody, int>)delegate(int cdCount, CharacterBody self) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) if (cdCount < 1 && self.bodyIndex == Bandit2Index && ((Enum)self.bodyFlags).HasFlag((Enum)(object)(BodyFlags)128)) { cdCount = 1; } return cdCount; }); } internal bool <Awake>b__2_1(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "ConvertCritChanceToCritDamage"); } internal int <Awake>b__2_2(int cdCount, CharacterBody self) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) if (cdCount < 1 && self.bodyIndex == Bandit2Index && ((Enum)self.bodyFlags).HasFlag((Enum)(object)(BodyFlags)128)) { cdCount = 1; } return cdCount; } } public static BodyIndex Bandit2Index; public static float baseCritMultiplier = 1.5f; public void Awake() { //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown //IL_008e: 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_0099: Expected O, but got Unknown baseCritMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Settings", "Base Crit Multiplier", 1.5f, "Bandit's base crit multiplier. 2.0 is standard.").Value; LanguageAPI.Add("BackstabRework_BANDIT2_PASSIVE_DESC", "All attacks from <style=cIsDamage>behind</style> are <style=cIsDamage>Critical Strikes</style>. All <style=cIsDamage>Critical Strike Chance</style> is converted into <style=cIsDamage>Critical Strike Damage</style>."); GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/bandit2body"); val.GetComponent<SkillLocator>().passiveSkill.skillDescriptionToken = "BackstabRework_BANDIT2_PASSIVE_DESC"; RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); object obj = <>c.<>9__2_0; if (obj == null) { Manipulator val2 = 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_0047: Unknown result type (might be due to invalid IL or missing references) ILCursor val3 = new ILCursor(il); val3.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Items), "ConvertCritChanceToCritDamage") }); val3.Index += 2; val3.Emit(OpCodes.Ldarg_0); val3.EmitDelegate<Func<int, CharacterBody, int>>((Func<int, CharacterBody, int>)delegate(int cdCount, CharacterBody self) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) if (cdCount < 1 && self.bodyIndex == Bandit2Index && ((Enum)self.bodyFlags).HasFlag((Enum)(object)(BodyFlags)128)) { cdCount = 1; } return cdCount; }); }; <>c.<>9__2_0 = val2; obj = (object)val2; } CharacterBody.RecalculateStats += (Manipulator)obj; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private void OnLoad() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) Bandit2Index = BodyCatalog.FindBodyIndex("Bandit2Body"); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { //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_000f: Unknown result type (might be due to invalid IL or missing references) if (sender.bodyIndex == Bandit2Index && ((Enum)sender.bodyFlags).HasFlag((Enum)(object)(BodyFlags)128)) { args.critDamageMultAdd -= 2f - baseCritMultiplier; } } }