Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Jakaka Skills v2.0.0
JakakaSkills.dll
Decompiled 3 months agousing System; 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 BepInEx; using BepInEx.Logging; using EntityStates; using EntityStates.Bandit2.Weapon; using EntityStates.Commando.CommandoWeapon; using JakakaSkills.MyEntityStates; using Microsoft.CodeAnalysis; using R2API; using R2API.Utils; using RoR2; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("JakakaSkills")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+51a44f09434386980ceb5c09df7a0e9882d7906d")] [assembly: AssemblyProduct("JakakaSkills")] [assembly: AssemblyTitle("JakakaSkills")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace JakakaSkills { [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Mephy.Jakaka_Skills", "Jakaka Skills", "2.0.0")] public class Main : BaseUnityPlugin { public const string PluginGUID = "com.Mephy.Jakaka_Skills"; public const string PluginName = "Jakaka Skills"; public const string PluginVersion = "2.0.0"; private AssetBundle jakakaassets; public void Awake() { //IL_007a: Unknown result type (might be due to invalid IL or missing references) LoadAssetBundle(); AddKeywords(); AddVendettaSkill(); AddBlunderbussSkill(); AddMolotovSkill(); AddSwitchbackSkill(); Assembly assembly = typeof(Main).Assembly; bool flag = false; Type[] types = assembly.GetTypes(); foreach (Type type in types) { if (type.Namespace != null && type.Namespace.StartsWith("JakakaSkills.MyEntityStates") && type.IsSubclassOf(typeof(EntityState)) && !type.IsAbstract) { ContentAddition.AddEntityState(type, ref flag); } } } private void LoadAssetBundle() { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "jakakaassets"); if (!File.Exists(text)) { ((BaseUnityPlugin)this).Logger.LogError((object)("Asset bundle not found at path: " + text)); return; } jakakaassets = AssetBundle.LoadFromFile(text); if ((Object)(object)jakakaassets == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load asset bundle!"); } else { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Asset bundle loaded successfully."); } } public void AddKeywords() { LanguageAPI.Add("KEYWORD_RELOADABLE", "<style=cKeywordName>Reloadable</style><style=cSub>Cooldown can be manually triggered by pressing <style=cIsDamage>fire</style> and <style=cIsUtility>interact</style> at the same time.</style>"); LanguageAPI.Add("KEYWORD_VENDETTA_ATK_EFFECT", "<style=cKeywordName><style=cDeath>Vendetta</style></style><style=cSub><style=cIsUtility>Attack speed doesn't apply normally</style>, it instead increases <style=cDeath>Vendetta</style> damage at <style=cIsDamage>50% effectiveness</style>.</style>"); LanguageAPI.Add("KEYWORD_BLUNDERBUSS_ATK_EFFECT", "<style=cKeywordName><style=cDeath>Blunderbuss</style></style><style=cSub><style=cIsUtility>Attack speed doesn't apply normally</style>, it instead increases <style=cDeath>Blunderbuss</style> projectile count at <style=cIsDamage>100% effectiveness</style>.</style>"); LanguageAPI.Add("KEYWORD_MOLOTOV_ATK_EFFECT", "<style=cKeywordName><style=cDeath>Molotov</style></style><style=cSub><style=cIsUtility>Attack speed</style> is <style=cIsDamage>67% as effective</style>, and also increases <style=cDeath>Molotov</style> radius at <style=cIsDamage>100% effectiveness</style>.</style>"); LanguageAPI.Add("KEYWORD_SWITCHBACK_SHOTGUN_ATK_EFFECT", "<style=cKeywordName><style=cDeath>Shotgun</style></style><style=cSub><style=cIsUtility>Attack speed doesn't apply normally</style>, it instead increases <style=cDeath>Shotgun</style> projectile count at <style=cIsDamage>33% effectiveness</style>.</style>"); LanguageAPI.Add("KEYWORD_SWITCHBACK_AUTO_ATK_EFFECT", "<style=cKeywordName><style=cDeath>Full Auto</style></style><style=cSub><style=cIsUtility>Attack speed</style> applies to <style=cDeath>Full Auto</style> at <style=cIsDamage>100% effectiveness</style>.</style>"); } public void AddVendettaSkill() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_0161: 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_018b: Expected O, but got Unknown //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2Body.prefab").WaitForCompletion(); LanguageAPI.Add("REVOLVER_NAME", "Vendetta"); LanguageAPI.Add("REVOLVER_DESCRIPTION", "<style=cDeath>Vendetta</style>. <style=cIsUtility>Reloadable</style>. Tap to fire a single shot for <style=cIsDamage>450% damage</style>. Hold down to blindly fire every remaining bullet in the gun for <style=cIsDamage>300% damage each</style>."); SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Vendetta)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 6; val2.rechargeStock = 9999; val2.baseRechargeInterval = 0.85f; val2.dontAllowPastMaxStocks = true; val2.isCooldownBlockedUntilManuallyReset = true; val2.beginSkillCooldownOnSkillEnd = true; val2.resetCooldownTimerOnUse = true; val2.canceledFromSprinting = true; val2.cancelSprintingOnActivation = true; val2.fullRestockOnAssign = true; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.mustKeyPress = false; val2.requiredStock = 1; val2.stockToConsume = 0; val2.autoHandleLuminousShot = true; val2.icon = jakakaassets.LoadAsset<Sprite>("Vendetta.png"); val2.skillDescriptionToken = "REVOLVER_DESCRIPTION"; val2.skillName = "Vendetta"; val2.skillNameToken = "REVOLVER_NAME"; val2.keywordTokens = new string[2] { "KEYWORD_VENDETTA_ATK_EFFECT", "KEYWORD_RELOADABLE" }; ContentAddition.AddSkillDef(val2); SkillFamily skillFamily = val.GetComponent<SkillLocator>().primary.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val3 = new Variant { skillDef = val2, unlockableDef = null }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[num] = val3; } private void AddBlunderbussSkill() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Expected O, but got Unknown //IL_017f: 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) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2Body.prefab").WaitForCompletion(); LanguageAPI.Add("SHOTGUN_NAME", "Blunderbuss"); LanguageAPI.Add("SHOTGUN_DESCRIPTION", "<style=cDeath>Blunderbuss</style>. Fire a powerful blunderbuss that gets more projectiles per stock for <style=cIsDamage>3-7-14-24x65% damage</style>."); SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Blunderbuss)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 4; val2.rechargeStock = 1; val2.baseRechargeInterval = 0.5f; val2.dontAllowPastMaxStocks = true; val2.beginSkillCooldownOnSkillEnd = true; val2.resetCooldownTimerOnUse = true; val2.canceledFromSprinting = false; val2.cancelSprintingOnActivation = true; val2.hideStockCount = false; val2.fullRestockOnAssign = true; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.mustKeyPress = true; val2.autoHandleLuminousShot = true; val2.requiredStock = 1; val2.stockToConsume = 4; val2.icon = jakakaassets.LoadAsset<Sprite>("Blunder.png"); val2.skillDescriptionToken = "SHOTGUN_DESCRIPTION"; val2.skillName = "Blunderbuss"; val2.skillNameToken = "SHOTGUN_NAME"; val2.keywordTokens = new string[1] { "KEYWORD_BLUNDERBUSS_ATK_EFFECT" }; ContentAddition.AddSkillDef(val2); SkillFamily skillFamily = val.GetComponent<SkillLocator>().primary.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val3 = new Variant { skillDef = val2, unlockableDef = null }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[num] = val3; } private void AddMolotovSkill() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Expected O, but got Unknown //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2Body.prefab").WaitForCompletion(); LanguageAPI.Add("MOLOTOV_NAME", "Molotov"); LanguageAPI.Add("MOLOTOV_DESCRIPTION", "<style=cDeath>Molotov</style>. Throw a molotov that shatters on the ground for <style=cIsDamage>350% damage</style>, creating a pool of fire that <style=cIsDamage>Ignites</style> enemies and deals <style=cIsDamage>175% damage per second</style>."); SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Molotov)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 3; val2.rechargeStock = 1; val2.baseRechargeInterval = 6f; val2.beginSkillCooldownOnSkillEnd = true; val2.resetCooldownTimerOnUse = true; val2.canceledFromSprinting = false; val2.cancelSprintingOnActivation = false; val2.hideStockCount = false; val2.fullRestockOnAssign = false; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.mustKeyPress = true; val2.autoHandleLuminousShot = true; val2.requiredStock = 1; val2.stockToConsume = 1; val2.icon = jakakaassets.LoadAsset<Sprite>("Molotov.png"); val2.skillDescriptionToken = "MOLOTOV_DESCRIPTION"; val2.skillName = "Molotov"; val2.skillNameToken = "MOLOTOV_NAME"; val2.keywordTokens = new string[2] { "KEYWORD_MOLOTOV_ATK_EFFECT", "KEYWORD_IGNITE" }; ContentAddition.AddSkillDef(val2); SkillFamily skillFamily = val.GetComponent<SkillLocator>().secondary.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val3 = new Variant { skillDef = val2, unlockableDef = null }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[num] = val3; } private void AddSwitchbackSkill() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: 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_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Expected O, but got Unknown //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); LanguageAPI.Add("SWITCHBACK_NAME", "Switchback"); LanguageAPI.Add("SWITCHBACK_DESCRIPTION", "<style=cDeath>Shotgun</style>. <style=cDeath>Full Auto</style>. <style=cIsUtility>Reloadable</style>. Tap to fire a shotgun blast that deals <style=cIsDamage>2x6x50% damage</style>. Hold down to rapidly fire at full auto for <style=cIsDamage>65% damage</style> a shot."); SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Switchback)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 48; val2.rechargeStock = 9999; val2.baseRechargeInterval = 1.15f; val2.isCooldownBlockedUntilManuallyReset = true; val2.dontAllowPastMaxStocks = true; val2.beginSkillCooldownOnSkillEnd = true; val2.resetCooldownTimerOnUse = true; val2.canceledFromSprinting = false; val2.cancelSprintingOnActivation = true; val2.fullRestockOnAssign = true; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.mustKeyPress = false; val2.requiredStock = 1; val2.stockToConsume = 0; val2.autoHandleLuminousShot = true; val2.icon = jakakaassets.LoadAsset<Sprite>("Switchback.png"); val2.skillDescriptionToken = "SWITCHBACK_DESCRIPTION"; val2.skillName = "Switchback"; val2.skillNameToken = "SWITCHBACK_NAME"; val2.keywordTokens = new string[3] { "KEYWORD_SWITCHBACK_SHOTGUN_ATK_EFFECT", "KEYWORD_SWITCHBACK_AUTO_ATK_EFFECT", "KEYWORD_RELOADABLE" }; ContentAddition.AddSkillDef(val2); SkillFamily skillFamily = val.GetComponent<SkillLocator>().primary.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val3 = new Variant { skillDef = val2, unlockableDef = null }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[num] = val3; } } } namespace JakakaSkills.MyEntityStates { public class Blunderbuss : BaseSkillState { public float BaseDuration = 0.25f; private float Duration; private float SpreadMult; private float RecoilMult; private uint BulletAmount; public GameObject HitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/HitsparkBandit.prefab").WaitForCompletion(); public GameObject TracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/TracerBandit2Shotgun.prefab").WaitForCompletion(); public GameObject MuzzleFlash = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/MuzzleflashBandit2.prefab").WaitForCompletion(); public override void OnEnter() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0127: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0172: 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_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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_019c: 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_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) ((BaseState)this).OnEnter(); GetStock(); Duration = BaseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Additive", "FireMainWeapon", "FireMainWeapon.playbackRate", 0.65f, 0f); Ray aimRay = ((BaseState)this).GetAimRay(); Util.PlaySound("Play_bandit2_m1_rifle", ((EntityState)this).gameObject); ((BaseState)this).StartAimMode(aimRay, 2f, false); ((BaseState)this).AddRecoil(-24f * RecoilMult, -32f * RecoilMult, -12f * RecoilMult, 12f * RecoilMult); if (((EntityState)this).isAuthority) { EffectManager.SimpleMuzzleFlash(MuzzleFlash, ((EntityState)this).gameObject, "MuzzleShotgun", false); 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 + 2.2f) * SpreadMult, bulletCount = BulletAmount, procCoefficient = 0.15f, damage = ((EntityState)this).characterBody.damage * 0.65f, force = 32f, falloffModel = (FalloffModel)1, tracerEffectPrefab = TracerEffectPrefab, muzzleName = "MuzzleShotgun", hitEffectPrefab = HitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), HitEffectNormal = false, stopperMask = CommonMasks.bullet, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, maxDistance = 800f }.Fire(); } } private void GetStock() { switch (((BaseSkillState)this).activatorSkillSlot.stock) { case -3: SpreadMult = 0.2f; RecoilMult = 0.33f; BulletAmount = (uint)(((BaseState)this).attackSpeedStat * 3f); break; case -2: SpreadMult = 0.45f; RecoilMult = 0.5f; BulletAmount = (uint)(((BaseState)this).attackSpeedStat * 7f); break; case -1: SpreadMult = 0.8f; RecoilMult = 0.8f; BulletAmount = (uint)(((BaseState)this).attackSpeedStat * 14f); break; default: SpreadMult = 1f; RecoilMult = 1f; BulletAmount = (uint)(((BaseState)this).attackSpeedStat * 24f); break; } } public override void OnExit() { if (((BaseSkillState)this).activatorSkillSlot.stock <= 0) { ((BaseSkillState)this).activatorSkillSlot.stock = 0; } ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= Duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class Molotov : BaseSkillState { public float BaseDuration = 0.25f; public float Duration; public override void OnEnter() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_0167: 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) ((BaseState)this).OnEnter(); GameObject obj = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/MolotovSingleProjectile"); GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/MolotovProjectileDotZone"); GameObject val2 = PrefabAPI.InstantiateClone(obj, "BanditMolotov", true); GameObject val3 = PrefabAPI.InstantiateClone(val, "BanditMolotovPool", true); Duration = BaseDuration / ((BaseState)this).attackSpeedStat; Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 2f, false); ((EntityState)this).PlayAnimation("Gesture, Additive", "SlashBlade", "SlashBlade.playbackRate", 0.5f, 0f); Util.PlaySound("bandit_shift_land_01", ((EntityState)this).gameObject); val2.GetComponent<ProjectileSimple>().lifetime = 12f; ProjectileImpactExplosion component = val2.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component).blastDamageCoefficient = 3.5f; ((ProjectileExplosion)component).blastProcCoefficient = 1f; ((ProjectileExplosion)component).blastRadius = ((ProjectileExplosion)component).blastRadius * ((BaseState)this).attackSpeedStat; ((ProjectileExplosion)component).childrenProjectilePrefab = val3; ((ProjectileExplosion)component).childrenCount = 1; ProjectileDotZone component2 = val3.GetComponent<ProjectileDotZone>(); component2.damageCoefficient = 0.25f; component2.overlapProcCoefficient = 0.5f; component2.lifetime = 8f; component2.fireFrequency = ((BaseState)this).attackSpeedStat * 2f / 3f * 10.5f; component2.resetFrequency = -0f; val3.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)128); Transform transform = val3.transform; transform.localScale *= ((BaseState)this).attackSpeedStat; if (((EntityState)this).isAuthority) { ProjectileManager.instance.FireProjectile(val2, ((Ray)(ref aimRay)).origin, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((Component)((EntityState)this).characterBody).gameObject, ((EntityState)this).characterBody.damage, 0f, Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, 80f, (DamageTypeCombo?)null); } } public override void OnExit() { ((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() { return (InterruptPriority)1; } } public class Switchback : BaseSkillState { private float Duration = 0.15f; private int Shots; private float Threshold = 0.185f; private float FireInt = 0.0375f; private float Timer; private bool Magdump; private bool AllTheSingleLadies; private float FireRate; public GameObject ShottyFlash = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/MuzzleflashFMJ.prefab").WaitForCompletion(); public GameObject SmgFlash = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/MuzzleflashBarrage.prefab").WaitForCompletion(); public GameObject HitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/Hitspark1.prefab").WaitForCompletion(); public GameObject TracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/TracerCommandoDefault.prefab").WaitForCompletion(); public GameObject ShotgunHitSpark = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/HitsparkCommandoShotgun.prefab").WaitForCompletion(); public GameObject ShotgunTracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/TracerCommandoShotgun.prefab").WaitForCompletion(); public override void OnEnter() { ((BaseState)this).OnEnter(); FireRate = FireInt / ((BaseState)this).attackSpeedStat; ((EntityState)this).skillLocator.primary.isCooldownBlocked = true; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).inputBank.interact.down) { ((EntityState)this).skillLocator.primary.stock = 0; } if (!Magdump && !((EntityState)this).inputBank.skill1.down && ((EntityState)this).fixedAge < Threshold && ((BaseSkillState)this).activatorSkillSlot.stock >= 12) { FireMulti(); } if (((BaseSkillState)this).activatorSkillSlot.stock < 12) { Threshold = 0f; } if (!Magdump && ((EntityState)this).fixedAge >= Threshold && ((EntityState)this).inputBank.skill1.down) { Magdump = true; Timer = 0f; } if (Magdump) { Timer += Time.fixedDeltaTime; if (Timer >= FireRate && ((BaseSkillState)this).activatorSkillSlot.stock > 0) { Timer = 0f; FireSmg(); ((EntityState)this).skillLocator.primary.DeductStock(1); } } if (((BaseSkillState)this).activatorSkillSlot.stock <= 0) { ((EntityState)this).skillLocator.primary.isCooldownBlocked = false; ((EntityState)this).outer.SetNextState((EntityState)(object)new SwitchbackReload()); } if (((EntityState)this).fixedAge >= Duration && !((EntityState)this).inputBank.skill1.down) { ((EntityState)this).outer.SetNextStateToMain(); } } private void FireMulti() { if (!AllTheSingleLadies) { AllTheSingleLadies = true; if (((EntityState)this).skillLocator.primary.stock > 0) { ((EntityState)this).skillLocator.primary.DeductStock(12); } FireMultiBullet("MuzzleRight"); FireMultiBullet("MuzzleLeft"); } } private void FireMultiBullet(string ShottyMuzzle) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0178: 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_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0191: 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_019c: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).characterBody.isSprinting) { ((EntityState)this).characterBody.isSprinting = false; } Util.PlaySound(FirePistol2.firePistolSoundString, ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 2f, false); ((EntityState)this).PlayAnimation("Gesture Additive, Right", FirePistol2.FirePistolRightStateHash); ((EntityState)this).PlayAnimation("Gesture Additive, Left", FirePistol2.FirePistolLeftStateHash); EffectManager.SimpleMuzzleFlash(ShottyFlash, ((EntityState)this).gameObject, ShottyMuzzle, false); Util.PlaySound(FirePistol2.firePistolSoundString, ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-7f, -12f, -7f, 9f); 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 = ((EntityState)this).characterBody.spreadBloomAngle + 1.85f, bulletCount = (uint)(((BaseState)this).attackSpeedStat / 3f * 18f), procCoefficient = 0.275f, damage = ((EntityState)this).characterBody.damage * 0.5f, force = 16f, falloffModel = (FalloffModel)2, tracerEffectPrefab = ShotgunTracerEffectPrefab, muzzleName = ShottyMuzzle, hitEffectPrefab = ShotgunHitSpark, isCrit = ((BaseState)this).RollCrit(), HitEffectNormal = true, stopperMask = CommonMasks.bullet, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, maxDistance = 250f }.Fire(); } } private void FireSmg() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_013e: 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_014b: 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_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0194: 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_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) Shots++; if (((EntityState)this).characterBody.isSprinting) { ((EntityState)this).characterBody.isSprinting = false; } Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 2f, false); string text; if (Shots % 2 == 0) { text = "MuzzleRight"; ((EntityState)this).PlayAnimation("Gesture Additive, Right", FirePistol2.FirePistolRightStateHash); } else { text = "MuzzleLeft"; ((EntityState)this).PlayAnimation("Gesture Additive, Left", FirePistol2.FirePistolLeftStateHash); } EffectManager.SimpleMuzzleFlash(SmgFlash, ((EntityState)this).gameObject, text, false); Util.PlaySound(FireBarrage.fireBarrageSoundString, ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-1.25f, -3f, -1.25f, 2f); 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 = ((EntityState)this).characterBody.spreadBloomAngle + 1.2f, bulletCount = 1u, procCoefficient = 0.5f, damage = ((EntityState)this).characterBody.damage * 0.65f, force = 4f, falloffModel = (FalloffModel)0, tracerEffectPrefab = TracerEffectPrefab, muzzleName = text, hitEffectPrefab = HitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), HitEffectNormal = true, stopperMask = CommonMasks.bullet, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, maxDistance = 1500f }.Fire(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class SwitchbackReload : GenericReload { private static int ReloadPistolsStateHash = Animator.StringToHash("ReloadPistols"); private static int ReloadPistolsParamHash = Animator.StringToHash("ReloadPistols.playbackRate"); private static int ReloadPistolsExitStateHash = Animator.StringToHash("ReloadPistolsExit"); public override void OnEnter() { ((GenericReload)this).OnEnter(); Util.PlaySound("Play_bandit2_R_load", ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Override", ReloadPistolsStateHash, ReloadPistolsParamHash, 1.15f); ((EntityState)this).PlayAnimation("Gesture, Additive", ReloadPistolsStateHash, ReloadPistolsParamHash, 1.15f); ((Component)((BaseState)this).FindModelChild("GunMeshL")).gameObject.SetActive(false); ((Component)((BaseState)this).FindModelChild("GunMeshR")).gameObject.SetActive(false); } public override void OnExit() { ((Component)((BaseState)this).FindModelChild("ReloadFXL")).gameObject.SetActive(false); ((Component)((BaseState)this).FindModelChild("ReloadFXR")).gameObject.SetActive(false); ((Component)((BaseState)this).FindModelChild("GunMeshL")).gameObject.SetActive(true); ((Component)((BaseState)this).FindModelChild("GunMeshR")).gameObject.SetActive(true); ((EntityState)this).PlayAnimation("Gesture, Override", ReloadPistolsExitStateHash); ((EntityState)this).PlayAnimation("Gesture, Additive", ReloadPistolsExitStateHash); ((GenericReload)this).OnExit(); } } public class Vendetta : BaseSkillState { private float Duration = 0.45f; private Animator Animator; private int BodySideWeaponLayerIndex; private float Threshold = 0.8f; private float FireInt = 0.05f; private float Timer; private bool Magdump; private bool AllTheSingleLadies; public GameObject MuzzleFlash = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/MuzzleflashBandit2.prefab").WaitForCompletion(); public GameObject CrosshairOverridePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2CrosshairPrepRevolverFire.prefab").WaitForCompletion(); public GameObject HitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/HitsparkBandit2Pistol.prefab").WaitForCompletion(); public GameObject TracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/TracerBanditPistol.prefab").WaitForCompletion(); public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).skillLocator.primary.isCooldownBlocked = true; Animator = ((EntityState)this).GetModelAnimator(); BodySideWeaponLayerIndex = Animator.GetLayerIndex("Body, SideWeapon"); Animator.SetLayerWeight(BodySideWeaponLayerIndex, 1f); CrosshairUtils.RequestOverrideForBody(((EntityState)this).characterBody, CrosshairOverridePrefab, (OverridePriority)1); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).inputBank.interact.down) { ((EntityState)this).skillLocator.primary.stock = 0; } if (!Magdump && !((EntityState)this).inputBank.skill1.down && ((EntityState)this).fixedAge < Threshold) { FireNormalShot(); } if (!Magdump && ((EntityState)this).fixedAge >= Threshold && ((EntityState)this).inputBank.skill1.down) { Magdump = true; Timer = 0f; } if (!Magdump && ((EntityState)this).fixedAge == 0.15f && ((EntityState)this).skillLocator.primary.stock > 0) { ((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", 0.65f, 0f); Util.PlaySound("Play_bandit2_R_load", ((EntityState)this).gameObject); } if (Magdump) { if (((EntityState)this).skillLocator.primary.stock <= 0) { ((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", 0.85f, 0f); Util.PlaySound("Play_bandit2_R_load", ((EntityState)this).gameObject); ((EntityState)this).skillLocator.primary.isCooldownBlocked = false; ((EntityState)this).outer.SetNextState((EntityState)(object)new VendettaExit()); } Timer += Time.fixedDeltaTime; if (Timer >= FireInt && ((EntityState)this).skillLocator.primary.stock > 0) { Timer = 0f; FireDumpShot(); GenericSkill primary = ((EntityState)this).skillLocator.primary; int stock = primary.stock; primary.stock = stock - 1; } } if (((EntityState)this).skillLocator.primary.stock <= 0) { ((EntityState)this).PlayAnimation("Gesture, Additive", "MainToSide", "MainToSide.playbackRate", 0.85f, 0f); Util.PlaySound("Play_bandit2_R_load", ((EntityState)this).gameObject); ((EntityState)this).skillLocator.primary.isCooldownBlocked = false; ((EntityState)this).outer.SetNextState((EntityState)(object)new VendettaExit()); } if (((EntityState)this).fixedAge >= Duration && !((EntityState)this).inputBank.skill1.down) { ((EntityState)this).outer.SetNextState((EntityState)(object)new VendettaExit()); } } private void FireNormalShot() { if (!AllTheSingleLadies) { AllTheSingleLadies = true; if (((EntityState)this).skillLocator.primary.stock > 0) { GenericSkill primary = ((EntityState)this).skillLocator.primary; int stock = primary.stock; primary.stock = stock - 1; } FireBulletSingle(); } } private void FireDumpShot() { DumpBullet(); } private void DumpBullet() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012c: 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_015b: 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_0168: 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_0179: 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_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019c: 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_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_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: 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_01c0: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { ((Component)((BaseState)this).FindModelChild("SpinningPistolFX")).gameObject.SetActive(false); Ray aimRay = ((BaseState)this).GetAimRay(); Animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(aimRay, 2f, false); BodySideWeaponLayerIndex = Animator.GetLayerIndex("Body, SideWeapon"); Animator.SetLayerWeight(BodySideWeaponLayerIndex, 1f); ((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 1f, 0f); Util.PlaySound("Play_bandit2_R_fire", ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-2f, -6f, -2f, 3f); EffectManager.SimpleMuzzleFlash(MuzzleFlash, ((EntityState)this).gameObject, "MuzzlePistol", false); 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 * 1.85f, bulletCount = 1u, procCoefficient = 0.65f, damage = ((EntityState)this).characterBody.damage * (((BaseState)this).attackSpeedStat / 2f * 6f), force = 4f, falloffModel = (FalloffModel)1, tracerEffectPrefab = TracerEffectPrefab, muzzleName = "MuzzlePistol", hitEffectPrefab = HitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), HitEffectNormal = false, stopperMask = CommonMasks.bullet, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, maxDistance = 450f }.Fire(); } } private void FireBulletSingle() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_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_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019d: 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_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: 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_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { ((Component)((BaseState)this).FindModelChild("SpinningPistolFX")).gameObject.SetActive(false); Ray aimRay = ((BaseState)this).GetAimRay(); Animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(aimRay, 2f, false); BodySideWeaponLayerIndex = Animator.GetLayerIndex("Body, SideWeapon"); Animator.SetLayerWeight(BodySideWeaponLayerIndex, 1f); ((EntityState)this).PlayAnimation("Gesture, Additive", "FireSideWeapon", "FireSideWeapon.playbackRate", 1f, 0f); Util.PlaySound("Play_bandit2_R_fire", ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-2f, -6f, -2f, 3f); EffectManager.SimpleMuzzleFlash(MuzzleFlash, ((EntityState)this).gameObject, "MuzzlePistol", false); 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 = 1.5f, damage = ((EntityState)this).characterBody.damage * (((BaseState)this).attackSpeedStat / 2f * 9f), force = 4f, falloffModel = (FalloffModel)0, tracerEffectPrefab = TracerEffectPrefab, muzzleName = "MuzzlePistol", hitEffectPrefab = HitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), HitEffectNormal = false, stopperMask = CommonMasks.bullet, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, maxDistance = 3000f }.Fire(); } } public override void OnExit() { if ((Object)(object)Animator != (Object)null) { Animator.SetLayerWeight(BodySideWeaponLayerIndex, 0f); } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class VendettaExit : BaseSidearmState { public override void OnEnter() { ((BaseSidearmState)this).OnEnter(); } public override void FixedUpdate() { ((BaseSidearmState)this).FixedUpdate(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)0; } } } namespace ExamplePlugin { internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } }