using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AncientScepter;
using BanditReloaded;
using BanditReloaded.Components;
using BanditReloaded.Hooks;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Bandit2.Weapon;
using EntityStates.BanditReloadedSkills;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Toolbot;
using KinematicCharacterController;
using On.EntityStates;
using On.RoR2;
using On.RoR2.Projectile;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.CharacterAI;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyCompany("BanditReloaded")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: CompilationRelaxations(8)]
[assembly: AssemblyTitle("BanditReloaded")]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BanditReloaded")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace EntityStates.BanditReloadedSkills
{
public class BanditHelpers
{
public static void TriggerQuickdraw(SkillLocator skills)
{
skills.primary.stock = skills.primary.maxStock;
skills.primary.rechargeStopwatch = 0f;
}
public static void ConsumeCloakDamageBuff(CharacterBody cb)
{
if (NetworkServer.active && Object.op_Implicit((Object)(object)cb))
{
cb.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
}
}
public static void PlayCloakDamageSound(CharacterBody cb)
{
if (Object.op_Implicit((Object)(object)cb) && cb.HasBuff(ModContentPack.cloakDamageBuff))
{
Util.PlaySound("Play_BanditReloaded_cloakdamage", ((Component)cb).gameObject);
}
}
}
public class Blast : BaseState
{
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit");
public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerbandit2rifle");
public static string attackSoundString = "Play_BanditReloaded_blast";
public static float maxDistance;
public static float damageCoefficient;
public static float force;
public static float bulletRadius = 0.4f;
public static float baseMaxDuration;
public static float baseMinDuration;
public static float recoilAmplitude;
public static float spreadBloomValue;
public static bool individualReload;
public static bool useFalloff;
public static bool penetrateEnemies;
public static bool noReload;
public static float mashSpread;
private float maxDuration;
private float minDuration;
private bool buttonReleased;
public override void OnEnter()
{
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Unknown result type (might be due to invalid IL or missing references)
//IL_0189: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: 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_01a9: 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_01b1: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0207: Unknown result type (might be due to invalid IL or missing references)
//IL_0213: 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_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_022a: Unknown result type (might be due to invalid IL or missing references)
//IL_0235: Unknown result type (might be due to invalid IL or missing references)
//IL_0251: Unknown result type (might be due to invalid IL or missing references)
//IL_0258: Unknown result type (might be due to invalid IL or missing references)
//IL_0263: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_0276: Unknown result type (might be due to invalid IL or missing references)
//IL_0277: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_0283: Expected O, but got Unknown
//IL_0296: Unknown result type (might be due to invalid IL or missing references)
//IL_029b: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
((BaseState)this).AddRecoil(-1f * recoilAmplitude, -2f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
maxDuration = baseMaxDuration / base.attackSpeedStat;
minDuration = baseMinDuration / base.attackSpeedStat;
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
((EntityState)this).characterBody.skillLocator.primary.rechargeStopwatch = 0f;
if (!noReload && ((EntityState)this).characterBody.skillLocator.primary.stock == 0)
{
Util.PlaySound("Play_commando_M2_grenade_throw", ((EntityState)this).gameObject);
}
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireShotgun", "FireShotgun.playbackRate", 0.5f, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "FireShotgun", "FireShotgun.playbackRate", 0.5f, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireMainWeapon", "FireMainWeapon.playbackRate", maxDuration, 0f);
}
string text = "MuzzleShotgun";
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false);
}
if (((EntityState)this).isAuthority)
{
BulletAttack val = new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = ((EntityState)this).characterBody.spreadBloomAngle,
bulletCount = 1u,
procCoefficient = 1f,
damage = damageCoefficient * base.damageStat,
force = force,
falloffModel = (FalloffModel)(useFalloff ? 1 : 0),
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = text,
hitEffectPrefab = hitEffectPrefab,
isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master),
HitEffectNormal = true,
radius = bulletRadius,
smartCollision = true,
maxDistance = maxDistance,
damageType = DamageTypeCombo.GenericPrimary
};
if (penetrateEnemies)
{
val.stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask;
}
val.Fire();
}
((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue);
}
public override void OnExit()
{
if (!buttonReleased && Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetSpreadBloom(0f, false);
}
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
buttonReleased |= !((EntityState)this).inputBank.skill1.down;
if (((EntityState)this).fixedAge >= maxDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0027: 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_002a: Unknown result type (might be due to invalid IL or missing references)
if (buttonReleased && ((EntityState)this).fixedAge >= minDuration)
{
return (InterruptPriority)0;
}
return (InterruptPriority)2;
}
}
public class Scatter : BaseState
{
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit");
public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerbandit2shotgun");
public static float damageCoefficient;
public static float force;
public static float bulletRadius = 0.3f;
public static float baseMaxDuration;
public static float baseMinDuration;
public static string attackSoundString = "Play_BanditReloaded_shotgun";
public static float recoilAmplitude;
public static float spreadBloomValue;
public static uint pelletCount;
public static float procCoefficient;
public static float range;
public static bool penetrateEnemies;
private float maxDuration;
private float minDuration;
private bool buttonReleased;
public static bool noReload;
private bool playedSound = false;
public override void OnEnter()
{
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_0192: 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_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//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_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0206: 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_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_0225: Unknown result type (might be due to invalid IL or missing references)
//IL_022a: Unknown result type (might be due to invalid IL or missing references)
//IL_0235: Unknown result type (might be due to invalid IL or missing references)
//IL_023c: Unknown result type (might be due to invalid IL or missing references)
//IL_0247: Unknown result type (might be due to invalid IL or missing references)
//IL_0263: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_0275: Unknown result type (might be due to invalid IL or missing references)
//IL_027c: Unknown result type (might be due to invalid IL or missing references)
//IL_0288: Unknown result type (might be due to invalid IL or missing references)
//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
//IL_0295: Unknown result type (might be due to invalid IL or missing references)
//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
//IL_02b8: Expected O, but got Unknown
((BaseState)this).OnEnter();
((BaseState)this).AddRecoil(-1f * recoilAmplitude, -2f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
maxDuration = baseMaxDuration / base.attackSpeedStat;
minDuration = baseMinDuration / base.attackSpeedStat;
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
((EntityState)this).characterBody.skillLocator.primary.rechargeStopwatch = 0f;
if (!noReload && ((EntityState)this).characterBody.skillLocator.primary.stock == 0)
{
Util.PlaySound("Play_commando_M2_grenade_throw", ((EntityState)this).gameObject);
}
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireShotgun", "FireShotgun.playbackRate", maxDuration * 0.8f, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "FireShotgun", "FireShotgun.playbackRate", maxDuration * 0.8f, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireMainWeapon", "FireMainWeapon.playbackRate", maxDuration, 0f);
}
string text = "MuzzleShotgun";
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false);
}
if (((EntityState)this).isAuthority)
{
BulletAttack val = new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = Mathf.Max(spreadBloomValue, ((EntityState)this).characterBody.spreadBloomAngle),
bulletCount = pelletCount,
procCoefficient = procCoefficient,
damage = damageCoefficient * base.damageStat,
force = force,
falloffModel = (FalloffModel)1,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = text,
hitEffectPrefab = hitEffectPrefab,
isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master),
HitEffectNormal = false,
radius = bulletRadius,
smartCollision = true,
maxDistance = range,
stopperMask = (penetrateEnemies ? ((LayerIndex)(ref LayerIndex.world)).mask : ((LayerIndex)(ref LayerIndex.entityPrecise)).mask),
damageType = DamageTypeCombo.GenericSecondary
};
val.Fire();
((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue);
}
}
public override void OnExit()
{
if (!buttonReleased && Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetSpreadBloom(0f, false);
}
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
buttonReleased |= !((EntityState)this).inputBank.skill1.down;
if (!playedSound && ((EntityState)this).fixedAge > maxDuration * 0.5f)
{
playedSound = true;
((EntityState)this).PlayCrossfade("Gesture, Additive", "EnterReload", "Reload.playbackRate", maxDuration * 0.5f, 0.1f);
Util.PlaySound("Play_bandit_M1_pump", ((EntityState)this).gameObject);
}
if (((EntityState)this).fixedAge >= maxDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0027: 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_002a: Unknown result type (might be due to invalid IL or missing references)
if (buttonReleased && ((EntityState)this).fixedAge >= minDuration)
{
return (InterruptPriority)0;
}
return (InterruptPriority)2;
}
}
public class AcidBomb : BaseState
{
public static GameObject projectilePrefab;
public static float damageCoefficient;
public static float acidDamageCoefficient;
public static float force;
public static float selfForce;
public static float baseDuration;
private float duration;
public override void OnEnter()
{
//IL_001b: 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)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture", "FireRevolver", "FireRevolver.playbackRate", duration, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "SlashBlade", "SlashBlade.playbackRate", duration, 0f);
}
Util.PlaySound("Play_commando_M2_grenade_throw", ((EntityState)this).gameObject);
if (((EntityState)this).isAuthority)
{
ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)DamageTypeCombo.GenericSecondary);
}
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
{
Vector3 val = -((Ray)(ref aimRay)).direction * selfForce;
val.y *= 0.5f;
((EntityState)this).characterMotor.ApplyForce(val, true, false);
}
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)3;
}
}
public class ClusterBomb : BaseState
{
public static float damageCoefficient;
public static float force = 2500f;
public static float selfForce = 0f;
public static float baseDuration;
public static float bombletDamageCoefficient;
private float duration;
public static GameObject projectilePrefab { get; set; }
public override void OnEnter()
{
//IL_001b: 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)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture", "FireRevolver", "FireRevolver.playbackRate", duration, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "SlashBlade", "SlashBlade.playbackRate", duration, 0f);
}
Util.PlaySound("Play_BanditReloaded_dynamite_toss", ((EntityState)this).gameObject);
if (((EntityState)this).isAuthority)
{
ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)DamageTypeCombo.GenericSecondary);
}
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
{
Vector3 val = -((Ray)(ref aimRay)).direction * selfForce;
val.y *= 0.5f;
((EntityState)this).characterMotor.ApplyForce(val, true, false);
}
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)3;
}
}
public class ThermiteBomb : BaseState
{
public static GameObject projectilePrefab;
public static float damageCoefficient;
public static float force = 0f;
public static float selfForce = 0f;
public static float baseDuration;
public static float burnDamageMult;
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbanditpistol");
private float duration;
private bool playedAnim = false;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
//IL_001b: 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)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
Util.PlaySound("Play_Bandit_m2_shot", ((EntityState)this).gameObject);
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "PrepRevolver", "PrepRevolver.playbackRate", duration * 0.5f, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "PrepRevolver", "PrepRevolver.playbackRate", duration * 0.5f, 0f);
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration * 0.5f, 0f);
}
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, "MuzzlePistol", false);
}
if (((EntityState)this).isAuthority)
{
ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)DamageTypeCombo.GenericSecondary);
}
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
{
Vector3 val = -((Ray)(ref aimRay)).direction * selfForce;
val.y *= 0.5f;
((EntityState)this).characterMotor.ApplyForce(val, true, false);
}
((EntityState)this).characterBody.AddSpreadBloom(2.4f);
((BaseState)this).AddRecoil(-6f, -12f, -3f, 3f);
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (!playedAnim && ((EntityState)this).fixedAge > duration * 0.5f)
{
playedAnim = true;
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", duration, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture", "FireRevolver", "FireRevolver.playbackRate", duration, 0f);
}
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
((EntityState)this).outer.SetNextState((EntityState)(object)new ExitRevolver());
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)3;
}
}
public class PrepBarrage : BaseState
{
public static float baseDuration;
public static string prepSoundString = "Play_bandit2_R_load";
private float duration;
private ChildLocator childLocator;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration, 0f);
}
Util.PlaySound(prepSoundString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
if (((EntityState)this).characterBody.HasBuff(ModContentPack.cloakDamageBuff))
{
((EntityState)this).characterBody.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, 1.2f);
}
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
((EntityState)this).characterBody.SetSpreadBloom(FireBarrage.spread * 0.8f, false);
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill4.down)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new FireBarrage());
}
}
public override void OnExit()
{
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)5;
}
}
public class FireBarrage : BaseState
{
public static GameObject effectPrefab = Resources.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit2pistol");
public static GameObject tracerEffectPrefab = Resources.Load<GameObject>("prefabs/effects/tracers/tracerbandit2rifle");
public static float damageCoefficient;
public static float force;
public static float baseDuration;
public static string attackSoundString = "Play_bandit2_R_fire";
public static float recoilAmplitude = 2.2f;
public static int maxBullets;
public static float endLag;
public static float spread;
public static float maxDistance;
private int bulletCount;
private ChildLocator childLocator;
private float duration;
private float prevShot;
private string muzzleName;
private bool isCrit;
private float recoil;
private Animator animator;
private int bodySideWeaponLayerIndex;
private bool earlyExit = true;
public override void OnEnter()
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
bulletCount = maxBullets;
prevShot = 0f;
duration = baseDuration / base.attackSpeedStat;
recoil = recoilAmplitude / base.attackSpeedStat;
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
muzzleName = "MuzzlePistol";
isCrit = ((BaseState)this).RollCrit();
animator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)animator) && !global::BanditReloaded.BanditReloaded.useOldModel)
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).characterBody.SetSpreadBloom(0f, false);
if (earlyExit && !global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "SideToMain");
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Unknown result type (might be due to invalid IL or missing references)
//IL_0187: Unknown result type (might be due to invalid IL or missing references)
//IL_0192: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0209: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: 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_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_0228: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Unknown result type (might be due to invalid IL or missing references)
//IL_0232: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (!(((EntityState)this).fixedAge - prevShot > duration))
{
return;
}
if (bulletCount > 0)
{
prevShot = ((EntityState)this).fixedAge;
bulletCount--;
((BaseState)this).AddRecoil(-3f * recoil, -4f * recoil, -0.5f * recoil, 0.5f * recoil);
Ray aimRay = ((BaseState)this).GetAimRay();
muzzleName = "MuzzlePistol";
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireRevolver");
((EntityState)this).PlayAnimation("Gesture, Override", "FireRevolver");
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 0.5f, 0f);
}
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleName, false);
}
float num = ((bulletCount <= 0) ? 0f : spread);
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = num,
maxSpread = num,
force = force,
falloffModel = (FalloffModel)0,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = muzzleName,
hitEffectPrefab = hitEffectPrefab,
isCrit = isCrit,
HitEffectNormal = true,
radius = 0.4f,
maxDistance = maxDistance,
procCoefficient = 1f,
damage = damageCoefficient * base.damageStat,
damageType = (DamageTypeCombo.op_Implicit((DamageType)12) | DamageTypeCombo.GenericSpecial),
smartCollision = true
}.Fire();
((EntityState)this).characterBody.SetSpreadBloom(spread * 0.8f, false);
}
}
else
{
if (!(((EntityState)this).fixedAge - prevShot > endLag))
{
return;
}
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
earlyExit = false;
((EntityState)this).outer.SetNextState((EntityState)(object)new ExitRevolver());
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
internal class ExitRevolver : BaseState
{
public float baseDuration = 1.5f;
protected float duration;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
((BaseState)this).OnEnter();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).outer.SetNextStateToMain();
return;
}
animator = ((EntityState)this).GetModelAnimator();
duration = baseDuration / base.attackSpeedStat;
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge > duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "SideToMain");
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)0;
}
}
public class PrepLightsOut : BaseState
{
public static float baseDuration;
public static string prepSoundString = "Play_bandit2_R_load";
private float duration;
private ChildLocator childLocator;
public static GameObject specialCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/crosshair/Bandit2CrosshairPrepRevolver");
private GameObject defaultCrosshairPrefab;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration, 0f);
}
Util.PlaySound(prepSoundString, ((EntityState)this).gameObject);
defaultCrosshairPrefab = ((EntityState)this).characterBody._defaultCrosshairPrefab;
((EntityState)this).characterBody._defaultCrosshairPrefab = specialCrosshairPrefab;
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
if (((EntityState)this).characterBody.HasBuff(ModContentPack.cloakDamageBuff))
{
((EntityState)this).characterBody.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, 1.2f);
}
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill4.down)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new FireLightsOut());
}
}
public override void OnExit()
{
((EntityState)this).characterBody._defaultCrosshairPrefab = defaultCrosshairPrefab;
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)5;
}
}
public class FireLightsOut : BaseState
{
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit2pistol");
public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerbandit2rifle");
public static float damageCoefficient;
public static float force;
public static float baseDuration;
public static string attackSoundString = "Play_bandit2_R_fire";
public static float recoilAmplitude = 4f;
private ChildLocator childLocator;
private float duration;
private Animator animator;
private int bodySideWeaponLayerIndex;
private bool earlyExit = true;
public override void OnEnter()
{
//IL_004e: 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_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: 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_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: 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_01a2: 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_01a9: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_0219: 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_0223: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
((BaseState)this).AddRecoil(-3f * recoilAmplitude, -4f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
string text = "MuzzlePistol";
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireRevolver");
((EntityState)this).PlayAnimation("Gesture, Override", "FireRevolver");
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 1f, 0f);
}
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false);
}
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = 0f,
force = force,
falloffModel = (FalloffModel)0,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = text,
hitEffectPrefab = hitEffectPrefab,
isCrit = ((BaseState)this).RollCrit(),
HitEffectNormal = true,
radius = 0.5f,
maxDistance = 2000f,
procCoefficient = 1f,
damage = damageCoefficient * base.damageStat,
damageType = (DamageTypeCombo.op_Implicit((DamageType)4) | DamageTypeCombo.GenericSpecial),
smartCollision = true
}.Fire();
}
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
if (earlyExit && !global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "SideToMain");
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (!(((EntityState)this).fixedAge >= duration) || !((EntityState)this).isAuthority)
{
return;
}
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
earlyExit = false;
((EntityState)this).outer.SetNextState((EntityState)(object)new ExitRevolver());
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class PrepBarrageScepter : BaseState
{
public static float baseDuration;
public static string prepSoundString = "Play_bandit2_R_load";
private float duration;
private ChildLocator childLocator;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration, 0f);
}
Util.PlaySound(prepSoundString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
if (((EntityState)this).characterBody.HasBuff(ModContentPack.cloakDamageBuff))
{
((EntityState)this).characterBody.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, 1.2f);
}
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetSpreadBloom(FireBarrage.spread * 0.8f, false);
((EntityState)this).characterBody.SetAimTimer(duration);
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill4.down)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new FireBarrageScepter());
}
}
public override void OnExit()
{
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)5;
}
}
public class FireBarrageScepter : BaseState
{
public static GameObject effectPrefab = Resources.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit2pistol");
public static GameObject tracerEffectPrefab = Resources.Load<GameObject>("prefabs/effects/tracers/tracerbandit2rifle");
public static float damageCoefficient;
public static float force;
public static float baseDuration;
public static string attackSoundString = "Play_bandit2_R_fire";
public static float recoilAmplitude = 2.2f;
public static int maxBullets;
public static float endLag;
public static float spread;
public static float maxDistance;
private int bulletCount;
private ChildLocator childLocator;
private float duration;
private float prevShot;
private string muzzleName;
private bool isCrit;
private float recoil;
private Animator animator;
private int bodySideWeaponLayerIndex;
private bool earlyExit = true;
public override void OnEnter()
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
bulletCount = maxBullets;
prevShot = 0f;
duration = baseDuration / base.attackSpeedStat;
recoil = recoilAmplitude / base.attackSpeedStat;
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
muzzleName = "MuzzlePistol";
isCrit = ((BaseState)this).RollCrit();
animator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)animator) && !global::BanditReloaded.BanditReloaded.useOldModel)
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).characterBody.SetSpreadBloom(0f, false);
if (earlyExit && !global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "SideToMain");
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_015e: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_019e: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
//IL_020e: Unknown result type (might be due to invalid IL or missing references)
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_0216: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0220: Unknown result type (might be due to invalid IL or missing references)
//IL_0225: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
if (!(((EntityState)this).fixedAge - prevShot > duration))
{
return;
}
if (bulletCount > 0)
{
prevShot = ((EntityState)this).fixedAge;
bulletCount--;
((BaseState)this).AddRecoil(-3f * recoil, -4f * recoil, -0.5f * recoil, 0.5f * recoil);
Ray aimRay = ((BaseState)this).GetAimRay();
muzzleName = "MuzzlePistol";
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireRevolver");
((EntityState)this).PlayAnimation("Gesture, Override", "FireRevolver");
}
else
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 0.5f, 0f);
}
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleName, false);
}
float num = ((bulletCount <= 0) ? 0f : spread);
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = num,
maxSpread = num,
force = force,
falloffModel = (FalloffModel)0,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = muzzleName,
hitEffectPrefab = hitEffectPrefab,
isCrit = isCrit,
HitEffectNormal = true,
radius = 0.4f,
maxDistance = maxDistance,
procCoefficient = 1f,
damage = damageCoefficient * base.damageStat,
damageType = (DamageTypeCombo.op_Implicit((DamageType)12) | DamageTypeCombo.GenericSpecial),
smartCollision = true
}.Fire();
((EntityState)this).characterBody.SetSpreadBloom(FireBarrage.spread * 0.8f, false);
}
}
else if (((EntityState)this).fixedAge - prevShot > endLag)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
earlyExit = false;
((EntityState)this).outer.SetNextState((EntityState)(object)new ExitRevolver());
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class PrepLightsOutScepter : BaseState
{
public static float baseDuration;
public static string prepSoundString = "Play_bandit2_R_load";
private float duration;
private ChildLocator childLocator;
public static GameObject specialCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/crosshair/Bandit2CrosshairPrepRevolver");
private GameObject defaultCrosshairPrefab;
private Animator animator;
private int bodySideWeaponLayerIndex;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "PrepRevolver", "PrepRevolver.playbackRate", duration, 0f);
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", duration, 0f);
Util.PlaySound(prepSoundString, ((EntityState)this).gameObject);
defaultCrosshairPrefab = ((EntityState)this).characterBody._defaultCrosshairPrefab;
((EntityState)this).characterBody._defaultCrosshairPrefab = specialCrosshairPrefab;
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(duration);
if (((EntityState)this).characterBody.HasBuff(ModContentPack.cloakDamageBuff))
{
((EntityState)this).characterBody.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, 1.2f);
}
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill4.down)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new FireLightsOutScepter());
}
}
public override void OnExit()
{
((EntityState)this).characterBody._defaultCrosshairPrefab = defaultCrosshairPrefab;
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)5;
}
}
public class FireLightsOutScepter : BaseState
{
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbandit2");
public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/hitsparkbandit2pistol");
public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracerbandit2rifle");
public static float damageCoefficient;
public static float force;
public static float baseDuration;
public static string attackSoundString = "Play_bandit2_R_fire";
public static float recoilAmplitude = 4f;
private float duration;
private Animator animator;
private int bodySideWeaponLayerIndex;
private bool earlyExit = true;
public override void OnEnter()
{
//IL_004e: 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_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: 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_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: 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_01a2: 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_01a9: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_0219: 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_0223: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
((BaseState)this).AddRecoil(-3f * recoilAmplitude, -4f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
string text = "MuzzlePistol";
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
animator = ((EntityState)this).GetModelAnimator();
if (global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "FireRevolver");
((EntityState)this).PlayAnimation("Gesture, Override", "FireRevolver");
}
else
{
if (Object.op_Implicit((Object)(object)animator))
{
bodySideWeaponLayerIndex = animator.GetLayerIndex("Body, SideWeapon");
animator.SetLayerWeight(bodySideWeaponLayerIndex, 1f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 1f, 0f);
}
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false);
}
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = 0f,
force = force,
falloffModel = (FalloffModel)0,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = text,
hitEffectPrefab = hitEffectPrefab,
isCrit = ((BaseState)this).RollCrit(),
HitEffectNormal = true,
radius = 0.5f,
maxDistance = 2000f,
procCoefficient = 1f,
damage = damageCoefficient * base.damageStat,
damageType = (DamageTypeCombo.op_Implicit((DamageType)4) | DamageTypeCombo.GenericSpecial),
smartCollision = true
}.Fire();
}
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
if (earlyExit && !global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "SideToMain");
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (!(((EntityState)this).fixedAge >= duration) || !((EntityState)this).isAuthority)
{
return;
}
if (!global::BanditReloaded.BanditReloaded.useOldModel)
{
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(bodySideWeaponLayerIndex, 0f);
}
Transform val = ((BaseState)this).FindModelChild("SpinningPistolFX");
if (Object.op_Implicit((Object)(object)val))
{
((Component)val).gameObject.SetActive(false);
}
}
earlyExit = false;
((EntityState)this).outer.SetNextState((EntityState)(object)new ExitRevolver());
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class Assassinate : BaseState
{
public static string chargeSoundString = "Play_item_proc_crit_cooldown";
public static string beginChargeSoundString = "Play_MULT_m1_snipe_charge";
public static float baseChargeDuration;
public static float minimumStateDuration = 0f;
public static float zoomFOV;
private float stopwatch;
private Animator animator;
private float lastMuzzleFlash = 0f;
private float chargeDuration;
private bool playedSound = false;
private float chargeCoefficient = 0f;
public static GameObject chargeupVfxPrefab;
public static GameObject holdChargeVfxPrefab;
private GameObject chargeupVfxGameObject;
private GameObject holdChargeVfxGameObject;
private Transform muzzleTransform;
public static string muzzleName = "MuzzleShotgun";
private GameObject defaultCrosshairPrefab;
private GameObject specialCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/crosshair/banditcrosshair");
private GameObject perfectCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/crosshair/StraightBracketCrosshair");
private bool chargeEffect = false;
public static float perfectChargeDuration = 0f;
public override void OnEnter()
{
((BaseState)this).OnEnter();
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
animator = ((EntityState)this).GetModelAnimator();
chargeDuration = baseChargeDuration / base.attackSpeedStat;
((EntityState)this).PlayAnimation("Gesture, Additive", "FireShotgun", "FireShotgun.playbackRate", chargeDuration * 1.5f, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "FireShotgun", "FireShotgun.playbackRate", chargeDuration * 1.5f, 0f);
Transform modelTransform = ((EntityState)this).GetModelTransform();
((EntityState)this).cameraTargetParams.fovOverride = zoomFOV;
if (Object.op_Implicit((Object)(object)modelTransform))
{
ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>();
if (Object.op_Implicit((Object)(object)component))
{
muzzleTransform = component.FindChild(muzzleName);
if (Object.op_Implicit((Object)(object)muzzleTransform))
{
chargeupVfxGameObject = Object.Instantiate<GameObject>(chargeupVfxPrefab, muzzleTransform);
chargeupVfxGameObject.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
}
}
}
Util.PlaySound(beginChargeSoundString, ((EntityState)this).gameObject);
defaultCrosshairPrefab = ((EntityState)this).characterBody._defaultCrosshairPrefab;
((EntityState)this).characterBody._defaultCrosshairPrefab = specialCrosshairPrefab;
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.HasBuff(ModContentPack.cloakDamageBuff))
{
((EntityState)this).characterBody.ClearTimedBuffs(ModContentPack.cloakDamageBuff);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, chargeDuration + 0.5f);
}
}
public override void OnExit()
{
((EntityState)this).characterBody._defaultCrosshairPrefab = defaultCrosshairPrefab;
((EntityState)this).cameraTargetParams.fovOverride = -1f;
if (Object.op_Implicit((Object)(object)chargeupVfxGameObject))
{
EntityState.Destroy((Object)(object)chargeupVfxGameObject);
chargeupVfxGameObject = null;
}
if (Object.op_Implicit((Object)(object)holdChargeVfxGameObject))
{
EntityState.Destroy((Object)(object)holdChargeVfxGameObject);
holdChargeVfxGameObject = null;
}
((EntityState)this).OnExit();
if (((EntityState)this).inputBank.skill4.down)
{
((EntityState)this).skillLocator.utility.rechargeStopwatch = ((EntityState)this).skillLocator.utility.CalculateFinalRechargeInterval() / 6f;
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
stopwatch += Time.fixedDeltaTime;
if (stopwatch >= chargeDuration)
{
if (stopwatch <= chargeDuration + perfectChargeDuration)
{
chargeCoefficient = 1.2f;
if (Object.op_Implicit((Object)(object)FireChargeShot.effectPrefab) && stopwatch - lastMuzzleFlash > 0.1f)
{
lastMuzzleFlash = stopwatch;
EffectManager.SimpleMuzzleFlash(FireChargeShot.effectPrefab, ((EntityState)this).gameObject, muzzleName, false);
}
((EntityState)this).characterBody._defaultCrosshairPrefab = perfectCrosshairPrefab;
}
else
{
if ((Object)(object)((EntityState)this).characterBody._defaultCrosshairPrefab != (Object)(object)specialCrosshairPrefab)
{
((EntityState)this).characterBody._defaultCrosshairPrefab = specialCrosshairPrefab;
}
chargeCoefficient = 1f;
}
((EntityState)this).characterBody.SetSpreadBloom(0f, false);
if (!playedSound)
{
playedSound = true;
Util.PlayAttackSpeedSound(chargeSoundString, ((EntityState)this).gameObject, perfectChargeDuration);
}
if (!chargeEffect)
{
chargeEffect = true;
if (Object.op_Implicit((Object)(object)chargeupVfxGameObject))
{
EntityState.Destroy((Object)(object)chargeupVfxGameObject);
chargeupVfxGameObject = null;
}
if (!Object.op_Implicit((Object)(object)holdChargeVfxGameObject) && Object.op_Implicit((Object)(object)muzzleTransform))
{
holdChargeVfxGameObject = Object.Instantiate<GameObject>(holdChargeVfxPrefab, muzzleTransform);
}
}
}
else
{
chargeCoefficient = stopwatch / chargeDuration;
((EntityState)this).characterBody.SetSpreadBloom(1.25f * (1f - chargeCoefficient), false);
}
if (!Object.op_Implicit((Object)(object)((EntityState)this).inputBank) || (stopwatch >= minimumStateDuration && ((EntityState)this).isAuthority))
{
if (!((EntityState)this).inputBank.skill3.down)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new FireChargeShot
{
chargeCoefficient = chargeCoefficient
});
}
else if (!Object.op_Implicit((Object)(object)((EntityState)this).inputBank))
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class FireChargeShot : BaseState
{
public static GameObject effectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbanditshotgun");
public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbanditshotgun");
public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracertoolbotrebar");
public static GameObject perfectTracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/tracers/tracertoolbotrebar");
public static float minDamageCoefficient;
public static float maxDamageCoefficient;
public static float perfectChargeBonus = 2f;
public static float minForce;
public static float maxForce;
public static float baseDuration;
public static string attackSoundString = "Play_bandit_M2_shot";
public static string fullChargeSoundString = "Play_item_use_lighningArm";
public static float recoilAmplitude = 4f;
public float chargeCoefficient;
public static float selfForceMax;
public static float selfForceMin;
private ChildLocator childLocator;
private float duration;
private bool perfect = false;
public static float minRadius;
public static float maxRadius;
public static int maxTargets;
public override void OnEnter()
{
//IL_004e: 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_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_0141: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
//IL_0150: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: 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_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_017e: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
//IL_01d9: 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_01f8: Unknown result type (might be due to invalid IL or missing references)
//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
//IL_020a: Unknown result type (might be due to invalid IL or missing references)
//IL_0216: Unknown result type (might be due to invalid IL or missing references)
//IL_0231: Unknown result type (might be due to invalid IL or missing references)
//IL_023d: Unknown result type (might be due to invalid IL or missing references)
//IL_0243: Unknown result type (might be due to invalid IL or missing references)
//IL_0248: Unknown result type (might be due to invalid IL or missing references)
//IL_024d: Unknown result type (might be due to invalid IL or missing references)
//IL_0250: Unknown result type (might be due to invalid IL or missing references)
//IL_0255: Unknown result type (might be due to invalid IL or missing references)
//IL_025a: Unknown result type (might be due to invalid IL or missing references)
//IL_025f: Unknown result type (might be due to invalid IL or missing references)
//IL_0264: Unknown result type (might be due to invalid IL or missing references)
//IL_026b: Unknown result type (might be due to invalid IL or missing references)
//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
//IL_02df: Unknown result type (might be due to invalid IL or missing references)
//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
((BaseState)this).AddRecoil(-3f * recoilAmplitude, -4f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 2f, false);
string text = "MuzzleShotgun";
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
if (chargeCoefficient > 1f)
{
perfect = true;
chargeCoefficient = 1f;
Util.PlaySound(fullChargeSoundString, ((EntityState)this).gameObject);
}
((EntityState)this).PlayAnimation("Gesture, Additive", "FireShotgun", "FireShotgun.playbackRate", duration * 0.8f, 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "FireShotgun", "FireShotgun.playbackRate", duration * 0.8f, 0f);
if (Object.op_Implicit((Object)(object)effectPrefab))
{
EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false);
}
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = 0f,
damage = Mathf.Lerp(minDamageCoefficient, maxDamageCoefficient, chargeCoefficient) * base.damageStat + (perfect ? (perfectChargeBonus * base.damageStat) : 0f),
force = Mathf.Lerp(minForce, maxForce, chargeCoefficient),
falloffModel = (FalloffModel)0,
tracerEffectPrefab = (perfect ? perfectTracerEffectPrefab : tracerEffectPrefab),
muzzleName = text,
hitEffectPrefab = hitEffectPrefab,
isCrit = ((BaseState)this).RollCrit(),
radius = Mathf.Lerp(minRadius, maxRadius, chargeCoefficient),
maxDistance = 2000f,
stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask,
damageType = (DamageTypeCombo.op_Implicit((DamageType)32) | DamageTypeCombo.GenericUtility),
smartCollision = true,
procCoefficient = Mathf.Lerp(0f, 1f, chargeCoefficient)
}.Fire();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
{
Vector3 val = -((Ray)(ref aimRay)).direction * Mathf.Lerp(selfForceMin, selfForceMax, chargeCoefficient);
val.y *= 0.5f;
((EntityState)this).characterMotor.ApplyForce(val, true, false);
}
}
}
public override void OnExit()
{
BanditHelpers.ConsumeCloakDamageBuff(((EntityState)this).characterBody);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)1;
}
}
public class CastSmokescreenNoDelay : BaseState
{
public static float duration;
public static float minimumStateDuration;
public static string startCloakSoundString = "Play_bandit_shift_land";
public static string stopCloakSoundString = "Play_bandit_shift_end";
public static GameObject smokescreenEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/smokescreeneffect");
public static Material destealthMaterial;
public static float damageCoefficient;
public static float procCoefficient;
public static bool nonLethal;
public static float radius;
public static float forceMagnitude = 0f;
private float stopwatch;
private bool hasCastSmoke;
private Animator animator;
public override void OnEnter()
{
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
CastSmoke();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
if (((EntityState)this).isAuthority)
{
((EntityState)this).characterBody.isSprinting = true;
}
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddBuff(Buffs.Cloak);
((EntityState)this).characterBody.AddBuff(Buffs.CloakSpeed);
((EntityState)this).characterBody.AddTimedBuff(ModContentPack.cloakDamageBuff, duration + 0.5f);
}
BanditHelpers.TriggerQuickdraw(((EntityState)this).characterBody.skillLocator);
}
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && !global::BanditReloaded.BanditReloaded.useOldModel)
{
((EntityState)this).PlayAnimation("Gesture, Additive", "ThrowSmokebomb", "ThrowSmokebomb.playbackRate", 0.2f, 0f);
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
if (NetworkServer.active)
{
if (((EntityState)this).characterBody.HasBuff(Buffs.Cloak))
{
((EntityState)this).characterBody.RemoveBuff(Buffs.Cloak);
}
if (((EntityState)this).characterBody.HasBuff(Buffs.CloakSpeed))
{
((EntityState)this).characterBody.RemoveBuff(Buffs.CloakSpeed);
}
}
BanditHelpers.PlayCloakDamageSound(((EntityState)this).characterBody);
}
if (!((EntityState)this).outer.destroying)
{
CastSmoke();
}
if (Object.op_Implicit((Object)(object)destealthMaterial))
{
TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)animator).gameObject);
val.duration = 1f;
val.destroyComponentOnEnd = true;
val.originalMaterial = destealthMaterial;
val.inspectorCharacterModel = ((Component)animator).gameObject.GetComponent<CharacterModel>();
val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val.animateShaderAlpha = true;
val.AddToCharacterModel(((Component)animator).GetComponent<CharacterModel>());
}
Util.PlaySound(stopCloakSoundString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetLayerWeight(animator.GetLayerIndex("Body, StealthWeapon"), 0f);
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
stopwatch += Time.fixedDeltaTime;
if (stopwatch >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void CastSmoke()
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Expected O, but got Unknown
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: 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_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0125: Unknown result type (might be due to invalid IL or missing references)
//IL_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_013a: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
if (!hasCastSmoke)
{
Util.PlaySound(startCloakSoundString, ((EntityState)this).gameObject);
hasCastSmoke = true;
}
EffectManager.SpawnEffect(smokescreenEffectPrefab, new EffectData
{
origin = ((EntityState)this).transform.position
}, false);
int layerIndex = animator.GetLayerIndex("Impact");
if (layerIndex >= 0)
{
animator.SetLayerWeight(layerIndex, 1f);
animator.PlayInFixedTime("LightImpact", layerIndex, 0f);
}
if (NetworkServer.active)
{
new BlastAttack
{
attacker = ((EntityState)this).gameObject,
inflictor = ((EntityState)this).gameObject,
teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject),
baseDamage = base.damageStat * damageCoefficient,
baseForce = forceMagnitude,
position = ((EntityState)this).transform.position,
radius = radius,
falloffModel = (FalloffModel)0,
damageType = (DamageTypeCombo.GenericUtility | DamageTypeCombo.op_Implicit((DamageType)(nonLethal ? 33 : 32))),
procCoefficient = procCoefficient,
crit = ((BaseState)this).RollCrit(),
attackerFiltering = (AttackerFiltering)2
}.Fire();
}
if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
{
((EntityState)this).characterMotor.velocity = new Vector3(((EntityState)this).characterMotor.velocity.x, 17f, ((EntityState)this).characterMotor.velocity.z);
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: 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)
if (stopwatch <= minimumStateDuration)
{
return (InterruptPriority)3;
}
return (InterruptPriority)0;
}
}
}
namespace BanditReloaded
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Moffein.BanditReloaded_v4", "Bandit Reloaded v4", "4.1.4")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
internal class BanditReloaded : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_OnEnable <>9__60_0;
internal void <Awake>b__60_0(orig_OnEnable orig, CameraRigController self)
{
SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && sceneDefForCurrentScene.baseSceneName.Equals("lobby"))
{
self.enableFading = false;
}
orig.Invoke(self);
}
}
public static bool useOldModel;
public static bool swapSpecial;
private int blastStock;
private float thermiteBurnDuration;
private float thermiteRadius;
private float thermiteProcCoefficient;
private float thermiteCooldown;
private int thermiteStock;
private float cloakCooldown;
private int cloakStock;
private float loCooldown;
private int loStock;
private int scatterStock;
private float acidRadius;
private float acidProcCoefficient;
private float acidCooldown;
private int acidStock;
private float asCooldown;
private int asStock;
private bool asEnabled;
private float cbRadius;
private float cbBombletRadius;
private float cbBombletProcCoefficient;
private float cbCooldown;
public static int cbStock;
public static int cbBombletCount;
private float reuCooldown;
private int reuStock;
public static SurvivorDef item;
public ReloadSkillDef primaryBlastDef;
public ReloadSkillDef primaryScatterDef;
public SkillDef utilityDefA;
public SkillDef utilityAltDef;
public SkillDef thermiteDef;
public SkillDef acidBombDef;
public SkillDef specialLightsOutDef;
public SkillDef clusterBombDef;
public SkillDef specialBarrageDef;
public SkillDef specialBarrageScepterDef;
public SkillDef specialLightsOutScepterDef;
public static GameObject BanditBody;
public GameObject BanditMonsterMaster = null;
public static ModdedDamageType ClusterBombDamage;
public GameObject AcidBombObject = null;
public GameObject ThermiteObject = null;
public static GameObject ClusterBombletObject;
public GameObject AcidBombGhostObject = null;
public GameObject ThermiteGhostObject = null;
public GameObject ClusterBombGhostObject = null;
public GameObject ClusterBombletGhostObject = null;
public Color BanditColor = new Color(41f / 51f, 41f / 85f, 43f / 51f);
private string BanditBodyName = "";
private readonly Shader hotpoo = Load<Shader>("RoR2/Base/Shaders/HGStandard.shader");
public GameObject ClusterBombObject { get; set; }
public void RegisterLanguageTokens()
{
Languages.AddLanguageSupport();
LanguageAPI.Add("BANDITRELOADEDBODY_DEFAULT_SKIN_NAME", "Default");
LanguageAPI.Add("BANDITRELOADED_PASSIVE_NAME", "Quickdraw");
LanguageAPI.Add("BANDITRELOADED_PASSIVE_DESCRIPTION", "The Bandit <style=cIsUtility>instantly reloads</style> his primary when using other skills.");
LanguageAPI.Add("BANDITRELOADED_OUTRO_FLAVOR", "..and so he left, with his pyrrhic plunder.");
LanguageAPI.Add("BANDITRELOADED_MAIN_ENDING_ESCAPE_FAILURE_FLAVOR", "..and so he vanished, unable to escape his past.");
LanguageAPI.Add("BANDITRELOADED_BODY_NAME", "Classic Bandit");
LanguageAPI.Add("BANDITRELOADED_BODY_SUBTITLE", "Wanted Dead or Alive");
string text = "The Bandit is a hit-and-run survivor who uses dirty tricks to assassinate his targets.<color=#CCD3E0>" + Environment.NewLine + Environment.NewLine;
text = text + "< ! > Space out your skill usage to keep firing Blast, or dump them all at once for massive damage!" + Environment.NewLine + Environment.NewLine;
text = text + "< ! > Use grenades to apply debuffs to enemies, boosting the damage of Lights Out." + Environment.NewLine + Environment.NewLine;
text = text + "< ! > Use Smokebomb to either run away or to stun many enemies at once." + Environment.NewLine + Environment.NewLine;
text = text + "< ! > Dealing a killing blow with Lights Out allows you to chain many skills together, allowing for maximum damage AND safety." + Environment.NewLine + Environment.NewLine;
LanguageAPI.Add("BANDITRELOADED_BODY_DESC", text);
LanguageAPI.Add("KEYWORD_BANDITRELOADED_EXECUTE", "<style=cKeywordName>Executing</style><style=cSub>The ability <style=cIsHealth>instantly kills</style> enemies below <style=cIsHealth>" + TakeDamage.specialExecuteThreshold.ToString("P0").Replace(" ", "").Replace(",", "") + " HP</style>.</style>");
LanguageAPI.Add("KEYWORD_BANDITRELOADED_RAPIDFIRE", "<style=cKeywordName>Rapid-Fire</style><style=cSub>The skill fires faster if you click faster.</style>");
LanguageAPI.Add("KEYWORD_BANDITRELOADED_THERMITE", "<style=cKeywordName>Thermite</style><style=cSub>Reduce moveme