using 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;
}
}
}