Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Bandit Tweaks v1.9.4
BanditTweaks.dll
Decompiled 2 years agousing System; using System.Collections.Generic; 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.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.Bandit2; using EntityStates.Bandit2.Weapon; using IL.EntityStates.Bandit2; using IL.EntityStates.Bandit2.Weapon; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.Bandit2; using On.EntityStates.Bandit2.Weapon; using On.RoR2; using On.RoR2.UI; using RiskyMod.Survivors.Bandit2; using RoR2; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; 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("BanditTweaks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+479bdf9377e8ff8884be4d4b82b0a71c8a413838")] [assembly: AssemblyProduct("BanditTweaks")] [assembly: AssemblyTitle("BanditTweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace BanditTweaks; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.BanditTweaks", "Bandit Tweaks", "1.9.3")] public class BanditTweaks : BaseUnityPlugin { public enum BanditFireMode { Tap, Spam } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_TakeDamage <>9__13_1; public static hook_FireShiv <>9__13_2; public static Func<Instruction, bool> <>9__13_18; public static Func<string, ThrowSmokebomb, string> <>9__13_19; public static Manipulator <>9__13_14; public static Func<Instruction, bool> <>9__13_20; public static Func<string, ThrowSmokebomb, string> <>9__13_21; public static Manipulator <>9__13_15; public static Func<Instruction, bool> <>9__13_22; public static Func<string, ThrowSmokebomb, string> <>9__13_23; public static Manipulator <>9__13_16; public static Func<Instruction, bool> <>9__13_24; public static Func<string, ThrowSmokebomb, string> <>9__13_25; public static Manipulator <>9__13_17; public static hook_GetMinimumInterruptPriority <>9__13_5; internal void <Awake>b__13_1(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)damageInfo.dotIndex == 6) { float num = self.body.armor + self.adaptiveArmorValue; if (num > 0f) { damageInfo.damage *= (100f + num) / 100f; } } orig.Invoke(self, damageInfo); } internal void <Awake>b__13_2(orig_FireShiv orig, Bandit2FireShiv self) { //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_0053: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00da: 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) if (Object.op_Implicit((Object)(object)Bandit2FireShiv.muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(Bandit2FireShiv.muzzleEffectPrefab, ((EntityState)self).gameObject, Bandit2FireShiv.muzzleString, false); } if (((EntityState)self).isAuthority) { Ray aimRay = ((BaseState)self).GetAimRay(); if ((Object)(object)self.projectilePrefab != (Object)null) { FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = self.projectilePrefab; val.position = ((Ray)(ref aimRay)).origin; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)self).gameObject; val.damage = ((BaseState)self).damageStat * self.damageCoefficient; val.force = self.force; val.crit = ((BaseState)self).RollCrit(); val.damageTypeOverride = DamageTypeCombo.op_Implicit((DamageType)134217760); FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); } } } internal void <Awake>b__13_14(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); } internal bool <Awake>b__13_18(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive"); } internal string <Awake>b__13_19(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; } internal void <Awake>b__13_15(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); } internal bool <Awake>b__13_20(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive"); } internal string <Awake>b__13_21(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; } internal void <Awake>b__13_16(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); } internal bool <Awake>b__13_22(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive"); } internal string <Awake>b__13_23(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; } internal void <Awake>b__13_17(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0039: 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>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); } internal bool <Awake>b__13_24(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive"); } internal string <Awake>b__13_25(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; } internal InterruptPriority <Awake>b__13_5(orig_GetMinimumInterruptPriority orig, Bandit2FirePrimaryBase self) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).fixedAge <= self.minimumDuration && ((EntityState)self).inputBank.skill1.wasDown) { return (InterruptPriority)2; } return (InterruptPriority)0; } } private bool enableFireSelect = true; private BanditFireMode fireMode = BanditFireMode.Tap; private bool selectWithScrollWheel = true; private KeyCode selectButton = (KeyCode)0; private KeyCode defaultButton = (KeyCode)0; private KeyCode burstButton = (KeyCode)0; private bool slayerFix = true; public static bool quickdrawEnabled; public static bool RiskyModLoaded; private static BodyIndex Bandit2Index; [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private bool CheckRiskyModBandit2Core() { return !Bandit2Core.enabled; } 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"); } public void Awake() { //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown //IL_00a9: Expected O, but got Unknown //IL_00c3: 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_00de: Expected O, but got Unknown //IL_00de: Expected O, but got Unknown //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown //IL_0110: Expected O, but got Unknown //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Expected O, but got Unknown //IL_0146: Expected O, but got Unknown //IL_0161: 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_017c: Expected O, but got Unknown //IL_017c: Expected O, but got Unknown //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Expected O, but got Unknown //IL_01b2: Expected O, but got Unknown //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Expected O, but got Unknown //IL_01e8: Expected O, but got Unknown //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: 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_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_0222: Expected O, but got Unknown //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Expected O, but got Unknown //IL_025c: Expected O, but got Unknown //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Expected O, but got Unknown //IL_0291: Expected O, but got Unknown //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Expected O, but got Unknown //IL_02c8: Expected O, but got Unknown //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Expected O, but got Unknown //IL_0302: Expected O, but got Unknown //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Expected O, but got Unknown //IL_0338: Expected O, but got Unknown //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Expected O, but got Unknown //IL_036e: Expected O, but got Unknown //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Expected O, but got Unknown //IL_03a3: Expected O, but got Unknown //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Expected O, but got Unknown //IL_03d6: Expected O, but got Unknown //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Expected O, but got Unknown //IL_040b: Expected O, but got Unknown //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Expected O, but got Unknown //IL_043d: Expected O, but got Unknown //IL_0454: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Expected O, but got Unknown //IL_046f: Expected O, but got Unknown //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Expected O, but got Unknown //IL_04e6: Unknown result type (might be due to invalid IL or missing references) //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Expected O, but got Unknown //IL_0774: Unknown result type (might be due to invalid IL or missing references) //IL_0785: Unknown result type (might be due to invalid IL or missing references) //IL_078f: Expected O, but got Unknown //IL_078f: Expected O, but got Unknown //IL_07ad: Unknown result type (might be due to invalid IL or missing references) //IL_07c2: Unknown result type (might be due to invalid IL or missing references) //IL_07cc: Expected O, but got Unknown //IL_07cc: Expected O, but got Unknown //IL_0515: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Expected O, but got Unknown //IL_0806: Unknown result type (might be due to invalid IL or missing references) //IL_0817: Unknown result type (might be due to invalid IL or missing references) //IL_0821: Expected O, but got Unknown //IL_0821: Expected O, but got Unknown //IL_083c: Unknown result type (might be due to invalid IL or missing references) //IL_084d: Unknown result type (might be due to invalid IL or missing references) //IL_0857: Expected O, but got Unknown //IL_0857: Expected O, but got Unknown //IL_0872: Unknown result type (might be due to invalid IL or missing references) //IL_0883: Unknown result type (might be due to invalid IL or missing references) //IL_088d: Expected O, but got Unknown //IL_088d: Expected O, but got Unknown //IL_08a8: Unknown result type (might be due to invalid IL or missing references) //IL_08bd: Unknown result type (might be due to invalid IL or missing references) //IL_08c7: Expected O, but got Unknown //IL_08c7: Expected O, but got Unknown //IL_08e1: Unknown result type (might be due to invalid IL or missing references) //IL_08f6: Unknown result type (might be due to invalid IL or missing references) //IL_0900: Expected O, but got Unknown //IL_0900: Expected O, but got Unknown //IL_0918: Unknown result type (might be due to invalid IL or missing references) //IL_092d: Unknown result type (might be due to invalid IL or missing references) //IL_0937: Expected O, but got Unknown //IL_0937: Expected O, but got Unknown //IL_065b: Unknown result type (might be due to invalid IL or missing references) //IL_065d: Unknown result type (might be due to invalid IL or missing references) //IL_0665: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_066e: Unknown result type (might be due to invalid IL or missing references) //IL_0673: Unknown result type (might be due to invalid IL or missing references) //IL_067b: Unknown result type (might be due to invalid IL or missing references) //IL_0683: Unknown result type (might be due to invalid IL or missing references) //IL_0691: Expected O, but got Unknown //IL_0699: Unknown result type (might be due to invalid IL or missing references) //IL_06a3: Expected O, but got Unknown //IL_057f: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Unknown result type (might be due to invalid IL or missing references) //IL_059d: Unknown result type (might be due to invalid IL or missing references) //IL_05ad: Unknown result type (might be due to invalid IL or missing references) //IL_05bb: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_0986: Unknown result type (might be due to invalid IL or missing references) //IL_098b: Unknown result type (might be due to invalid IL or missing references) //IL_099b: Unknown result type (might be due to invalid IL or missing references) //IL_09a0: Unknown result type (might be due to invalid IL or missing references) //IL_09b0: Unknown result type (might be due to invalid IL or missing references) //IL_09b5: Unknown result type (might be due to invalid IL or missing references) //IL_09c5: Unknown result type (might be due to invalid IL or missing references) //IL_09ca: Unknown result type (might be due to invalid IL or missing references) //IL_09da: Unknown result type (might be due to invalid IL or missing references) //IL_09df: Unknown result type (might be due to invalid IL or missing references) //IL_0a2c: Unknown result type (might be due to invalid IL or missing references) //IL_0a36: Expected O, but got Unknown //IL_06e2: Unknown result type (might be due to invalid IL or missing references) //IL_06e7: Unknown result type (might be due to invalid IL or missing references) //IL_06ed: Expected O, but got Unknown //IL_0a53: Unknown result type (might be due to invalid IL or missing references) //IL_0a5d: Expected O, but got Unknown //IL_0707: Unknown result type (might be due to invalid IL or missing references) //IL_070c: Unknown result type (might be due to invalid IL or missing references) //IL_0712: Expected O, but got Unknown //IL_072c: Unknown result type (might be due to invalid IL or missing references) //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0737: Expected O, but got Unknown //IL_0afe: Unknown result type (might be due to invalid IL or missing references) //IL_0b08: Expected O, but got Unknown //IL_0b10: Unknown result type (might be due to invalid IL or missing references) //IL_0b1a: Expected O, but got Unknown //IL_0b22: Unknown result type (might be due to invalid IL or missing references) //IL_0b2c: Expected O, but got Unknown //IL_0b34: Unknown result type (might be due to invalid IL or missing references) //IL_0b3e: Expected O, but got Unknown //IL_0b46: Unknown result type (might be due to invalid IL or missing references) //IL_0b50: Expected O, but got Unknown //IL_0aeb: Unknown result type (might be due to invalid IL or missing references) //IL_0af5: Expected O, but got Unknown //IL_0751: Unknown result type (might be due to invalid IL or missing references) //IL_0756: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Expected O, but got Unknown //IL_0a79: Unknown result type (might be due to invalid IL or missing references) //IL_0a90: Unknown result type (might be due to invalid IL or missing references) //IL_0ac1: Unknown result type (might be due to invalid IL or missing references) //IL_0acb: Expected O, but got Unknown //IL_0aa9: Unknown result type (might be due to invalid IL or missing references) //IL_0aae: Unknown result type (might be due to invalid IL or missing references) //IL_0ab4: Expected O, but got Unknown RiskyModLoaded = Chainloader.PluginInfos.ContainsKey("com.RiskyLives.RiskyMod"); bool flag = true; if (RiskyModLoaded) { flag = CheckRiskyModBandit2Core(); } if (!flag) { Debug.LogError((object)"BanditTweaks: RiskyMod's Bandit changes are enabled, aborting Awake(). BanditTweaks and RiskyMod's Bandit changes are highly incompatible, so you should disable this mod or RiskyMod's Bandit tweaks in the config."); return; } GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/bandit2body"); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); quickdrawEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("00 - Passive", "Enable Quickdraw"), false, new ConfigDescription("From BanditReloaded. Using other skills will instantly reload your Primary.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool flag2 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01 - Primary", "Enable Autofire"), true, new ConfigDescription("Holding down the Primary button automatically fires your gun.", (AcceptableValueBase)null, Array.Empty<object>())).Value; enableFireSelect = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01 - Primary", "Enable Firemode Selection"), true, new ConfigDescription("Enables swapping primary firemode between slow and fast fire.", (AcceptableValueBase)null, Array.Empty<object>())).Value; selectWithScrollWheel = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01 - Primary", "Select with ScrollWheel"), true, new ConfigDescription("Scroll wheel swaps between firemodes.", (AcceptableValueBase)null, Array.Empty<object>())).Value; selectButton = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(new ConfigDefinition("01 - Primary", "Select Button"), (KeyCode)0, new ConfigDescription("Button to swap between firemodes.", (AcceptableValueBase)null, Array.Empty<object>())).Value; defaultButton = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(new ConfigDefinition("01 - Primary", "Tapfire Button"), (KeyCode)0, new ConfigDescription("Button to swap to Default firemode.", (AcceptableValueBase)null, Array.Empty<object>())).Value; burstButton = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(new ConfigDefinition("01 - Primary", "Spamfire Button"), (KeyCode)0, new ConfigDescription("Button to swap to Burst firemode.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float autoFireDuration = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("01 - Primary", "Tap Fire Rate"), 0.3f, new ConfigDescription("How long it takes to autofire shots on the Default firemode.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float burstFireDuration = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("01 - Primary", "Spam Fire Rate"), 0.12f, new ConfigDescription("How long it takes to autofire shots on the Burst firemode.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool value = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01 - Primary", "Prioritize Reload"), false, new ConfigDescription("Makes reloading take priority over shooting.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float burstBulletRadius = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("01a - Burst", "Bullet Radius"), 0.3f, new ConfigDescription("How wide bullets are (0 is vanilla).", (AcceptableValueBase)null, Array.Empty<object>())).Value; float blastBulletRadius = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("01b - Blast", "Bullet Radius"), 0.5f, new ConfigDescription("How wide bullets are (0 is vanilla).", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool blastReduceSpread = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01b - Blast", "Remove Spread"), true, new ConfigDescription("Removes spread inaccuracy.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool blastPenetration = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("01b - Blast", "Pierce Enemies"), true, new ConfigDescription("Bullets can pierce through multiple enemies.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool value2 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("02 - Secondary", "Serrated Dagger Tweaks"), true, new ConfigDescription("Serrated Dagger lunges while sprinting and has a larger hitbox.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool noKnifeAttackSpeed = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("02 - Secondary", "Serrated Dagger Minimum Duration"), true, new ConfigDescription("Serrated Dagger has a minimum duration of 0.3s so that the lunge doesn't stop working at high attack speeds.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool value3 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("02 - Secondary", "Hemorrhage Ignore Armor"), true, new ConfigDescription("*SERVER-SIDE* Hemorrhage ignores positive armor values.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool value4 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("02 - Secondary", "Serrated Shiv Tweaks"), true, new ConfigDescription("Serrated Shiv stuns on hit.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool value5 = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("03 - Utility", "Smokebomb Anim while grounded"), true, new ConfigDescription("Enable the Smokebomb animation when on the ground.", (AcceptableValueBase)null, Array.Empty<object>())).Value; if (Chainloader.PluginInfos.ContainsKey("de.userstorm.banditweaponmodes")) { flag2 = false; } if (!flag2) { enableFireSelect = false; } if (blastPenetration || blastReduceSpread) { Bandit2FireRifle.ModifyBullet += (hook_ModifyBullet)delegate(orig_ModifyBullet orig, Bandit2FireRifle self, BulletAttack bulletAttack) { //IL_001f: 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) orig.Invoke(self, bulletAttack); if (blastPenetration) { bulletAttack.stopperMask = LayerMask.op_Implicit(LayerIndex.world.intVal); } if (blastReduceSpread) { bulletAttack.minSpread = 0f; bulletAttack.maxSpread = 0f; } }; } if (value3) { object obj = <>c.<>9__13_1; if (obj == null) { hook_TakeDamage val2 = delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 if ((int)damageInfo.dotIndex == 6) { float num2 = self.body.armor + self.adaptiveArmorValue; if (num2 > 0f) { damageInfo.damage *= (100f + num2) / 100f; } } orig.Invoke(self, damageInfo); }; <>c.<>9__13_1 = val2; obj = (object)val2; } HealthComponent.TakeDamage += (hook_TakeDamage)obj; } if (value4) { object obj2 = <>c.<>9__13_2; if (obj2 == null) { hook_FireShiv val3 = delegate(orig_FireShiv orig, Bandit2FireShiv self) { //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_0053: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_00da: 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) if (Object.op_Implicit((Object)(object)Bandit2FireShiv.muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(Bandit2FireShiv.muzzleEffectPrefab, ((EntityState)self).gameObject, Bandit2FireShiv.muzzleString, false); } if (((EntityState)self).isAuthority) { Ray aimRay = ((BaseState)self).GetAimRay(); if ((Object)(object)self.projectilePrefab != (Object)null) { FireProjectileInfo val21 = default(FireProjectileInfo); val21.projectilePrefab = self.projectilePrefab; val21.position = ((Ray)(ref aimRay)).origin; val21.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val21.owner = ((EntityState)self).gameObject; val21.damage = ((BaseState)self).damageStat * self.damageCoefficient; val21.force = self.force; val21.crit = ((BaseState)self).RollCrit(); val21.damageTypeOverride = DamageTypeCombo.op_Implicit((DamageType)134217760); FireProjectileInfo val22 = val21; ProjectileManager.instance.FireProjectile(val22); } } }; <>c.<>9__13_2 = val3; obj2 = (object)val3; } Bandit2FireShiv.FireShiv += (hook_FireShiv)obj2; } if (value2) { CharacterBody component = val.GetComponent<CharacterBody>(); HitBoxGroup componentInChildren = ((Component)component).GetComponentInChildren<HitBoxGroup>(); if (componentInChildren.groupName == "SlashBlade") { Transform transform = ((Component)componentInChildren.hitBoxes[0]).transform; transform.localScale = new Vector3(transform.localScale.x, transform.localScale.y * 1.4f, transform.localScale.z * 1.3f); transform.localPosition += new Vector3(0f, 0f, 1f); } Keyframe val4 = default(Keyframe); ((Keyframe)(ref val4))..ctor(0f, 3f, -8.182907f, -3.3333333f, 0f, 0.058712736f); ((Keyframe)(ref val4)).weightedMode = (WeightedMode)0; ((Keyframe)(ref val4)).tangentMode = 65; Keyframe val5 = default(Keyframe); ((Keyframe)(ref val5))..ctor(0.3f, 0f, -3.3333333f, -3.3333333f, 1f / 3f, 1f / 3f); ((Keyframe)(ref val5)).weightedMode = (WeightedMode)0; ((Keyframe)(ref val5)).tangentMode = 34; Keyframe[] keys = (Keyframe[])(object)new Keyframe[2] { val4, val5 }; AnimationCurve knifeVelocity = new AnimationCurve { preWrapMode = (WrapMode)8, postWrapMode = (WrapMode)8, keys = keys }; SlashBlade.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, SlashBlade self) { if (noKnifeAttackSpeed) { ((BasicMeleeAttack)self).ignoreAttackSpeed = true; } orig.Invoke(self); if (Object.op_Implicit((Object)(object)((EntityState)self).characterBody) && ((EntityState)self).characterBody.isSprinting) { ((BasicMeleeAttack)self).forceForwardVelocity = true; ((BasicMeleeAttack)self).forwardVelocityCurve = knifeVelocity; } }; if (noKnifeAttackSpeed) { SetEntityStateField("entitystates.bandit2.weapon.slashblade", "ignoreAttackSpeed", "1"); } object obj3 = <>c.<>9__13_14; if (obj3 == null) { Manipulator val6 = 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_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val20 = new ILCursor(il); val20.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val20.Emit(OpCodes.Ldarg_0); val20.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator4 = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator4)) { int layerIndex4 = modelAnimator4.GetLayerIndex("Gesture, Additive"); if (layerIndex4 >= 0) { AnimatorStateInfo currentAnimatorStateInfo4 = modelAnimator4.GetCurrentAnimatorStateInfo(layerIndex4); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo4)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); }; <>c.<>9__13_14 = val6; obj3 = (object)val6; } ThrowSmokebomb.OnEnter += (Manipulator)obj3; object obj4 = <>c.<>9__13_15; if (obj4 == null) { Manipulator val7 = 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_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val19 = new ILCursor(il); val19.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val19.Emit(OpCodes.Ldarg_0); val19.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator3 = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator3)) { int layerIndex3 = modelAnimator3.GetLayerIndex("Gesture, Additive"); if (layerIndex3 >= 0) { AnimatorStateInfo currentAnimatorStateInfo3 = modelAnimator3.GetCurrentAnimatorStateInfo(layerIndex3); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo3)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); }; <>c.<>9__13_15 = val7; obj4 = (object)val7; } Bandit2FirePrimaryBase.OnEnter += (Manipulator)obj4; object obj5 = <>c.<>9__13_16; if (obj5 == null) { Manipulator val8 = 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_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val18 = new ILCursor(il); val18.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val18.Emit(OpCodes.Ldarg_0); val18.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator2 = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator2)) { int layerIndex2 = modelAnimator2.GetLayerIndex("Gesture, Additive"); if (layerIndex2 >= 0) { AnimatorStateInfo currentAnimatorStateInfo2 = modelAnimator2.GetCurrentAnimatorStateInfo(layerIndex2); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo2)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); }; <>c.<>9__13_16 = val8; obj5 = (object)val8; } Reload.OnEnter += (Manipulator)obj5; object obj6 = <>c.<>9__13_17; if (obj6 == null) { Manipulator val9 = 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_0039: Unknown result type (might be due to invalid IL or missing references) ILCursor val17 = new ILCursor(il); val17.GotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Gesture, Additive") }); val17.Emit(OpCodes.Ldarg_0); val17.EmitDelegate<Func<string, ThrowSmokebomb, string>>((Func<string, ThrowSmokebomb, string>)delegate(string animLayer, ThrowSmokebomb self) { //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) Animator modelAnimator = ((EntityState)self).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture, Additive"); if (layerIndex >= 0) { AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("SlashBlade")) { return "BanditTweaksInvalidLayer"; } } } return animLayer; }); }; <>c.<>9__13_17 = val9; obj6 = (object)val9; } EnterReload.OnEnter += (Manipulator)obj6; } bool cloakRequireRepress = !((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("03 - Utility", "Auto Cloak when Holding"), true, new ConfigDescription("Holding down the Utility button cloaks you as soon as it is off cooldown.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float minCloakDuration = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("03 - Utility", "Minimum Cloak Duration"), 0.3f, new ConfigDescription("Minimum duration before other skills can be used after cloaking if Cloak Requires re-press is disabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value; if (minCloakDuration <= 0f) { cloakRequireRepress = true; } slayerFix = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("04 - Special", "Slayer Fix"), true, new ConfigDescription("*SERVER-SIDE* Slayer (bonus damage against low HP enemies) now affects procs.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool specialHold = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("04 - Special", "Hold to Aim"), true, new ConfigDescription("The Special button can be held down to aim your shot. The shot will only shoot once you release.", (AcceptableValueBase)null, Array.Empty<object>())).Value; bool specialSprintCancel = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("04 - Special", "Cancel by Sprinting"), false, new ConfigDescription("Sprinting cancels your special.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float graceDurationLocalUser = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("04 - Special", "Grace Period Duration - Host"), 0.25f, new ConfigDescription("*SERVER-SIDE* Special on-kill grace period for Host and Singleplayer. 0 disables.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float graceDurationClient = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("04 - Special", "Grace Period Duration - Client"), 0.5f, new ConfigDescription("*SERVER-SIDE* Special on-kill grace period for online clients. 0 disables.", (AcceptableValueBase)null, Array.Empty<object>())).Value; float executeThreshold = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("04 - Special", "Execute Threshold"), 0f, new ConfigDescription("*SERVER-SIDE* Bandit's Specials instanatly kill enemies below this HP percent. 0 = disabled, 1.0 = 100% HP.", (AcceptableValueBase)null, Array.Empty<object>())).Value; if (RiskyModLoaded) { slayerFix = false; graceDurationLocalUser = 0f; graceDurationClient = 0f; } GracePeriodComponent.graceDurationLocalUser = graceDurationLocalUser; GracePeriodComponent.graceDurationClient = graceDurationClient; SkillLocator component2 = val.GetComponent<SkillLocator>(); SkillDef val10 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/FireShotgun2.asset").WaitForCompletion(); SkillDef val11 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/Bandit2Blast.asset").WaitForCompletion(); SkillDef val12 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/ThrowSmokebomb.asset").WaitForCompletion(); SkillDef val13 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/ResetRevolver.asset").WaitForCompletion(); SkillDef val14 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/SkullRevolver.asset").WaitForCompletion(); val12.mustKeyPress = cloakRequireRepress; val13.canceledFromSprinting = specialSprintCancel; val14.canceledFromSprinting = specialSprintCancel; if (burstBulletRadius > 0f) { FireShotgun2.ModifyBullet += (hook_ModifyBullet)delegate(orig_ModifyBullet orig, FireShotgun2 self, BulletAttack bulletAttack) { bulletAttack.radius = burstBulletRadius; orig.Invoke(self, bulletAttack); }; } if (blastBulletRadius > 0f) { Bandit2FireRifle.ModifyBullet += (hook_ModifyBullet)delegate(orig_ModifyBullet orig, Bandit2FireRifle self, BulletAttack bulletAttack) { bulletAttack.radius = blastBulletRadius; orig.Invoke(self, bulletAttack); }; } if (flag2) { val10.mustKeyPress = false; val10.interruptPriority = (InterruptPriority)((!value) ? 1 : 0); val11.mustKeyPress = false; val11.interruptPriority = (InterruptPriority)((!value) ? 1 : 0); object obj7 = <>c.<>9__13_5; if (obj7 == null) { hook_GetMinimumInterruptPriority val15 = (orig_GetMinimumInterruptPriority orig, Bandit2FirePrimaryBase self) => (((EntityState)self).fixedAge <= self.minimumDuration && ((EntityState)self).inputBank.skill1.wasDown) ? ((InterruptPriority)2) : ((InterruptPriority)0); <>c.<>9__13_5 = val15; obj7 = (object)val15; } Bandit2FirePrimaryBase.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)obj7; Bandit2FirePrimaryBase.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, Bandit2FirePrimaryBase self) { if (fireMode == BanditFireMode.Tap) { self.minimumBaseDuration = autoFireDuration; } else { self.minimumBaseDuration = burstFireDuration; } orig.Invoke(self); }; } val.AddComponent<QuickdrawComponent>(); if (!cloakRequireRepress) { StealthMode.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)((orig_GetMinimumInterruptPriority orig, StealthMode self) => (InterruptPriority)((((EntityState)self).fixedAge > minCloakDuration) ? 1 : 5)); } ThrowSmokebomb.GetMinimumInterruptPriority += (hook_GetMinimumInterruptPriority)((orig_GetMinimumInterruptPriority orig, ThrowSmokebomb self) => (!cloakRequireRepress) ? ((InterruptPriority)((((EntityState)self).fixedAge > minCloakDuration) ? 2 : 3)) : orig.Invoke(self)); BaseSidearmState.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, BaseSidearmState self) { if (!specialSprintCancel) { ((EntityState)self).fixedAge = ((EntityState)self).fixedAge + ((EntityState)self).GetDeltaTime(); } else { orig.Invoke(self); } }; BasePrepSidearmRevolverState.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, BasePrepSidearmRevolverState self) { if (specialHold) { ((EntityState)self).fixedAge = ((EntityState)self).fixedAge + ((EntityState)self).GetDeltaTime(); if (((EntityState)self).fixedAge > ((BaseSidearmState)self).duration && !((EntityState)self).inputBank.skill4.down) { ((EntityState)self).outer.SetNextState(self.GetNextState()); } } else { orig.Invoke(self); } }; HealthComponent.TakeDamage += (hook_TakeDamage)delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0029: Invalid comparison between Unknown and I4 //IL_0072: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_012d: 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_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: 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_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: 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_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: 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_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: 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_0316: Unknown result type (might be due to invalid IL or missing references) if (slayerFix && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)524288)) > 0) { damageInfo.damageType &= DamageTypeCombo.op_Implicit((DamageType)(-524289)); damageInfo.damage *= Mathf.Lerp(3f, 1f, self.combinedHealthFraction); } DamageType dt = DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)268435460)); GracePeriodComponent gracePeriodComponent = null; CharacterBody val16 = null; if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { val16 = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)val16) && val16.bodyIndex != Bandit2Index) { val16 = null; } } if (Object.op_Implicit((Object)(object)val16) && graceDurationLocalUser > 0f) { gracePeriodComponent = ((Component)self).gameObject.GetComponent<GracePeriodComponent>(); if (!Object.op_Implicit((Object)(object)gracePeriodComponent)) { gracePeriodComponent = ((Component)self).gameObject.AddComponent<GracePeriodComponent>(); } if (self.alive && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)4)) == 0L && gracePeriodComponent.HasReset(val16)) { damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)4); } if (self.alive && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)268435456)) == 0L && gracePeriodComponent.HasSkull(val16)) { damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)268435456); } } orig.Invoke(self, damageInfo); if (Object.op_Implicit((Object)(object)gracePeriodComponent) && Object.op_Implicit((Object)(object)val16) && Object.op_Implicit((Object)(object)val16.master) && !damageInfo.rejected) { float graceDuration = (IsLocalUser(val16) ? GracePeriodComponent.graceDurationLocalUser : GracePeriodComponent.graceDurationClient); if (self.alive) { gracePeriodComponent.AddTimer(val16, dt, graceDuration); } else { gracePeriodComponent.TriggerEffects(val16); } } if (self.alive && executeThreshold > 0f && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)268435460)) != 0 && Object.op_Implicit((Object)(object)val16)) { float num = (self.isInFrozenState ? 0.3f : 0f); if (val16.executeEliteHealthFraction > num) { num = val16.executeEliteHealthFraction; } num += executeThreshold; if (executeThreshold > self.combinedHealthFraction) { damageInfo.damage = self.combinedHealth / 2f + 1f; damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)2); damageInfo.procCoefficient = 0f; damageInfo.crit = true; damageInfo.damageColorIndex = (DamageColorIndex)5; orig.Invoke(self, damageInfo); } } }; SkillIcon.Update += (hook_Update)delegate(orig_Update orig, SkillIcon self) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Invalid comparison between Unknown and I4 //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (enableFireSelect && Object.op_Implicit((Object)(object)self.targetSkill) && (int)self.targetSkillSlot == 0 && self.targetSkill.characterBody.bodyIndex == Bandit2Index) { ((Component)self.stockText).gameObject.SetActive(true); ((TMP_Text)self.stockText).fontSize = 12f; ((TMP_Text)self.stockText).SetText(fireMode.ToString() + "\n" + self.targetSkill.stock, true); } }; } public static bool IsLocalUser(CharacterBody playerBody) { foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)playerBody == (Object)(object)readOnlyLocalUsers.cachedBody) { return true; } } return false; } private static float GetBandit2SlashBladeMinDurationHook(SlashBlade self) { return 0.3f; } public void ToggleFireMode() { if (fireMode == BanditFireMode.Tap) { fireMode = BanditFireMode.Spam; } else { fireMode = BanditFireMode.Tap; } } public void Update() { //IL_003e: 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_006e: Unknown result type (might be due to invalid IL or missing references) if (enableFireSelect) { if (selectWithScrollWheel && Input.GetAxis("Mouse ScrollWheel") != 0f) { ToggleFireMode(); } if (Input.GetKeyDown(selectButton)) { ToggleFireMode(); } if (Input.GetKeyDown(defaultButton)) { fireMode = BanditFireMode.Tap; } if (Input.GetKeyDown(burstButton)) { fireMode = BanditFireMode.Spam; } } } internal bool SetEntityStateField(string entityStateName, string fieldName, string value) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } } public class GracePeriodComponent : MonoBehaviour { public class BanditTimer { public SkillLocator skillLocator; public float length; public DamageType damageType; public CharacterBody body; public BanditTimer(CharacterBody b, SkillLocator o, float l, DamageType dt) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) body = b; skillLocator = o; length = l; damageType = dt; } } public static float graceDurationLocalUser = 0.5f; public static float graceDurationClient = 1f; private List<BanditTimer> hitList = new List<BanditTimer>(); private List<BanditTimer> del = new List<BanditTimer>(); public void FixedUpdate() { del.Clear(); foreach (BanditTimer hit in hitList) { if (Object.op_Implicit((Object)(object)hit.skillLocator)) { hit.length -= Time.fixedDeltaTime; if (hit.length <= 0f) { del.Add(hit); } } } foreach (BanditTimer item in del) { hitList.Remove(item); } del.Clear(); } public void TriggerEffects(CharacterBody killerBody) { //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Invalid comparison between Unknown and I4 //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Invalid comparison between Unknown and I4 List<CharacterBody> list = new List<CharacterBody>(); foreach (BanditTimer hit in hitList) { bool flag = false; foreach (CharacterBody item in list) { if ((Object)(object)item == (Object)(object)hit.body) { flag = true; break; } } if (!flag && (Object)(object)hit.body != (Object)(object)killerBody && Object.op_Implicit((Object)(object)hit.skillLocator) && ((Behaviour)hit.skillLocator).isActiveAndEnabled) { list.Add(hit.body); if ((hit.damageType & 4) > 0) { hit.skillLocator.ResetSkills(); } if ((hit.damageType & 0x10000000) > 0) { hit.body.AddBuff(Buffs.BanditSkull); } } } hitList.Clear(); } public void AddTimer(CharacterBody b, DamageType dt, float graceDuration) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)b.skillLocator)) { BanditTimer item = new BanditTimer(b, b.skillLocator, graceDuration, dt); hitList.Add(item); } } public bool HasSkull(CharacterBody body) { //IL_0028: 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_0034: Invalid comparison between Unknown and I4 foreach (BanditTimer hit in hitList) { if ((Object)(object)hit.body == (Object)(object)body && (hit.damageType & 0x10000000) > 0) { return true; } } return false; } public bool HasReset(CharacterBody body) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Invalid comparison between Unknown and I4 foreach (BanditTimer hit in hitList) { if ((Object)(object)hit.body == (Object)(object)body && (hit.damageType & 4) > 0) { return true; } } return false; } } internal class QuickdrawComponent : MonoBehaviour { private SkillLocator sk; private int prevSecondaryStock = 0; private int prevUtilityStock = 0; private int prevSpecialStock = 0; public void Awake() { sk = ((Component)this).GetComponent<SkillLocator>(); if (!Object.op_Implicit((Object)(object)sk)) { Object.Destroy((Object)(object)this); } } public void FixedUpdate() { if (BanditTweaks.quickdrawEnabled) { if (sk.secondary.stock < prevSecondaryStock || sk.utility.stock < prevUtilityStock || sk.special.stock < prevSpecialStock) { sk.primary.stock = sk.primary.maxStock; } prevSecondaryStock = sk.secondary.stock; prevUtilityStock = sk.utility.stock; prevSpecialStock = sk.special.stock; } if (sk.primary.stock > sk.primary.maxStock) { sk.primary.stock = sk.primary.maxStock; } } }