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 Trovian v1.0.1
plugins/Trovian/Trovian.dll
Decompiled 2 years 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 KinematicCharacterController; using Microsoft.CodeAnalysis; using R2API; using R2API.Utils; using RoR2; using RoR2.Projectile; using RoR2.Skills; using TrovianSkills.EntityStates; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Trovian")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f8a32b284a512104731940f97fbbe6616da43f6a")] [assembly: AssemblyProduct("Trovian")] [assembly: AssemblyTitle("Trovian")] [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 Trovian { 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); } } } namespace TrovianSkills { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.BreezyInterwebs.TrovianGunslinger", "TrovianGunslinger", "1.0.0")] public class CustomSkills : BaseUnityPlugin { private AssetBundleCreateRequest trovianAssets; private Sprite chargedIcon; private Sprite jumpIcon; private Sprite overchargeIcon; private Sprite stallIcon; private Sprite noneIcon; public void Awake() { //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: 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_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Expected O, but got Unknown //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0382: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Expected O, but got Unknown //IL_038d: Unknown result type (might be due to invalid IL or missing references) //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Unknown result type (might be due to invalid IL or missing references) //IL_04db: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Expected O, but got Unknown //IL_04e6: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_063f: Unknown result type (might be due to invalid IL or missing references) //IL_0665: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Expected O, but got Unknown //IL_0670: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_077b: Unknown result type (might be due to invalid IL or missing references) //IL_07a1: Unknown result type (might be due to invalid IL or missing references) //IL_07ab: Expected O, but got Unknown //IL_07ac: Unknown result type (might be due to invalid IL or missing references) //IL_07ae: Unknown result type (might be due to invalid IL or missing references) trovianAssets = AssetBundle.LoadFromFileAsync(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "AssetBundles", "trovianskills")); ref Sprite reference = ref chargedIcon; Object asset = trovianAssets.assetBundle.LoadAssetAsync<Sprite>("blast").asset; reference = (Sprite)(object)((asset is Sprite) ? asset : null); ref Sprite reference2 = ref jumpIcon; Object asset2 = trovianAssets.assetBundle.LoadAssetAsync<Sprite>("jump").asset; reference2 = (Sprite)(object)((asset2 is Sprite) ? asset2 : null); ref Sprite reference3 = ref overchargeIcon; Object asset3 = trovianAssets.assetBundle.LoadAssetAsync<Sprite>("overcharge").asset; reference3 = (Sprite)(object)((asset3 is Sprite) ? asset3 : null); ref Sprite reference4 = ref stallIcon; Object asset4 = trovianAssets.assetBundle.LoadAssetAsync<Sprite>("stall").asset; reference4 = (Sprite)(object)((asset4 is Sprite) ? asset4 : null); ref Sprite reference5 = ref noneIcon; Object asset5 = trovianAssets.assetBundle.LoadAssetAsync<Sprite>("none").asset; reference5 = (Sprite)(object)((asset5 is Sprite) ? asset5 : null); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); LanguageAPI.Add("COMMANDO_SECONDARY_CHARGEDSHOT_NAME", "Charged Shot"); LanguageAPI.Add("COMMANDO_SECONDARY_CHARGEDSHOT_DESCRIPTION", "Fire a single charged shot for <style=cIsDamage>700% damage</style>."); SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Blast)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 1; val2.baseRechargeInterval = 5f; val2.beginSkillCooldownOnSkillEnd = true; val2.canceledFromSprinting = false; val2.cancelSprintingOnActivation = true; val2.fullRestockOnAssign = true; val2.interruptPriority = (InterruptPriority)1; val2.isCombatSkill = true; val2.mustKeyPress = true; val2.rechargeStock = 1; val2.requiredStock = 1; val2.stockToConsume = 1; val2.icon = chargedIcon; val2.skillDescriptionToken = "COMMANDO_SECONDARY_CHARGEDSHOT_DESCRIPTION"; val2.skillName = "COMMANDO_SECONDARY_CHARGEDSHOT_NAME"; val2.skillNameToken = "COMMANDO_SECONDARY_CHARGEDSHOT_NAME"; ContentAddition.AddSkillDef(val2); SkillLocator component = val.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.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, unlockableName = "" }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[num] = val3; LanguageAPI.Add("COMMANDO_UTILITY_JUMP_NAME", "Blast Jump"); LanguageAPI.Add("COMMANDO_UTILITY_JUMP_DESCRIPTION", "<style=cIsUtility>Fly</style> into the sky."); SkillDef val4 = ScriptableObject.CreateInstance<SkillDef>(); val4.activationState = new SerializableEntityStateType(typeof(BlastUp)); val4.activationStateMachineName = "Weapon"; val4.baseMaxStock = 1; val4.baseRechargeInterval = 3f; val4.beginSkillCooldownOnSkillEnd = true; val4.canceledFromSprinting = false; val4.cancelSprintingOnActivation = false; val4.fullRestockOnAssign = true; val4.interruptPriority = (InterruptPriority)2; val4.isCombatSkill = false; val4.mustKeyPress = true; val4.rechargeStock = 1; val4.requiredStock = 1; val4.stockToConsume = 1; val4.icon = jumpIcon; val4.skillDescriptionToken = "COMMANDO_UTILITY_JUMP_DESCRIPTION"; val4.skillName = "COMMANDO_UTILITY_JUMP_NAME"; val4.skillNameToken = "COMMANDO_UTILITY_JUMP_NAME"; ContentAddition.AddSkillDef(val4); component = val.GetComponent<SkillLocator>(); skillFamily = component.utility.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants2 = skillFamily.variants; int num2 = skillFamily.variants.Length - 1; val3 = new Variant { skillDef = val4, unlockableName = "" }; ((Variant)(ref val3)).viewableNode = new Node(val4.skillNameToken, false, (Node)null); variants2[num2] = val3; LanguageAPI.Add("COMMANDO_SPECIAL_OVERCHARGED_NAME", "Overcharged"); LanguageAPI.Add("COMMANDO_SPECIAL_OVERCHARGED_DESCRIPTION", "Blast a 5 second burst of <style=cIsDamage>charged shots</style>."); SkillDef val5 = ScriptableObject.CreateInstance<SkillDef>(); val5.activationState = new SerializableEntityStateType(typeof(Overcharge)); val5.activationStateMachineName = "Weapon"; val5.baseMaxStock = 1; val5.baseRechargeInterval = 15f; val5.beginSkillCooldownOnSkillEnd = false; val5.canceledFromSprinting = false; val5.cancelSprintingOnActivation = true; val5.fullRestockOnAssign = true; val5.interruptPriority = (InterruptPriority)1; val5.isCombatSkill = true; val5.mustKeyPress = false; val5.rechargeStock = 1; val5.requiredStock = 1; val5.stockToConsume = 1; val5.icon = overchargeIcon; val5.skillDescriptionToken = "COMMANDO_SPECIAL_OVERCHARGED_DESCRIPTION"; val5.skillName = "COMMANDO_SPECIAL_OVERCHARGED_NAME"; val5.skillNameToken = "COMMANDO_SPECIAL_OVERCHARGED_NAME"; ContentAddition.AddSkillDef(val5); component = val.GetComponent<SkillLocator>(); skillFamily = component.special.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants3 = skillFamily.variants; int num3 = skillFamily.variants.Length - 1; val3 = new Variant { skillDef = val5, unlockableName = "" }; ((Variant)(ref val3)).viewableNode = new Node(val5.skillNameToken, false, (Node)null); variants3[num3] = val3; LanguageAPI.Add("COMMANDO_PASSIVE_NONE_NAME", "No Passive"); LanguageAPI.Add("COMMANDO_PASSIVE_NONE_DESCRIPTION", "Allows you to play vanilla Commando."); PassiveItemSkillDef val6 = ScriptableObject.CreateInstance<PassiveItemSkillDef>(); val6.passiveItem = null; ((SkillDef)val6).baseMaxStock = 1; ((SkillDef)val6).baseRechargeInterval = 0f; ((SkillDef)val6).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val6).canceledFromSprinting = false; ((SkillDef)val6).cancelSprintingOnActivation = false; ((SkillDef)val6).fullRestockOnAssign = true; ((SkillDef)val6).interruptPriority = (InterruptPriority)0; ((SkillDef)val6).isCombatSkill = false; ((SkillDef)val6).mustKeyPress = false; ((SkillDef)val6).rechargeStock = 1; ((SkillDef)val6).requiredStock = 1; ((SkillDef)val6).stockToConsume = 1; ((SkillDef)val6).icon = noneIcon; ((SkillDef)val6).skillDescriptionToken = "COMMANDO_PASSIVE_NONE_DESCRIPTION"; ((SkillDef)val6).skillName = "COMMANDO_PASSIVE_NONE_NAME"; ((SkillDef)val6).skillNameToken = "COMMANDO_PASSIVE_NONE_NAME"; ContentAddition.AddSkillDef((SkillDef)(object)val6); GenericSkill val7 = val.AddComponent<GenericSkill>(); val7.skillName = ((Object)val).name + "UniqueSkill"; SkillFamily val8 = ScriptableObject.CreateInstance<SkillFamily>(); ((Object)val8).name = ((Object)val).name + "UniqueFamily"; Reflection.SetFieldValue<SkillFamily>((object)val7, "_skillFamily", val8); val8.variants = (Variant[])(object)new Variant[0]; Array.Resize(ref val8.variants, val8.variants.Length + 1); Variant[] variants4 = val8.variants; int num4 = val8.variants.Length - 1; val3 = new Variant { skillDef = (SkillDef)(object)val6, unlockableName = "" }; ((Variant)(ref val3)).viewableNode = new Node(((SkillDef)val6).skillNameToken, false, (Node)null); variants4[num4] = val3; ContentAddition.AddSkillFamily(val8); LanguageAPI.Add("COMMANDO_PASSIVE_LEECH_NAME", "Velocity Leecher"); LanguageAPI.Add("COMMANDO_PASSIVE_LEECH_DESCRIPTION", "<style=cIsUtility>Slow your descent</style> upon damaging an enemy."); PassiveItemSkillDef val9 = ScriptableObject.CreateInstance<PassiveItemSkillDef>(); val9.passiveItem = VelocityItem.myItemDef; ((SkillDef)val9).baseMaxStock = 1; ((SkillDef)val9).baseRechargeInterval = 0f; ((SkillDef)val9).beginSkillCooldownOnSkillEnd = true; ((SkillDef)val9).canceledFromSprinting = false; ((SkillDef)val9).cancelSprintingOnActivation = false; ((SkillDef)val9).fullRestockOnAssign = true; ((SkillDef)val9).interruptPriority = (InterruptPriority)0; ((SkillDef)val9).isCombatSkill = false; ((SkillDef)val9).mustKeyPress = false; ((SkillDef)val9).rechargeStock = 1; ((SkillDef)val9).requiredStock = 1; ((SkillDef)val9).stockToConsume = 1; ((SkillDef)val9).icon = stallIcon; ((SkillDef)val9).skillDescriptionToken = "COMMANDO_PASSIVE_LEECH_DESCRIPTION"; ((SkillDef)val9).skillName = "COMMANDO_PASSIVE_LEECH_NAME"; ((SkillDef)val9).skillNameToken = "COMMANDO_PASSIVE_LEECH_NAME"; ContentAddition.AddSkillDef((SkillDef)(object)val9); Array.Resize(ref val8.variants, val8.variants.Length + 1); Variant[] variants5 = val8.variants; int num5 = val8.variants.Length - 1; val3 = new Variant { skillDef = (SkillDef)(object)val9, unlockableName = "" }; ((Variant)(ref val3)).viewableNode = new Node(((SkillDef)val9).skillNameToken, false, (Node)null); variants5[num5] = val3; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.BreezyInterwebs.VelocityItem", "VelocityItem", "1.0.0")] public class VelocityItem : BaseUnityPlugin { public static ItemDef myItemDef = ScriptableObject.CreateInstance<ItemDef>(); public void Awake() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_00c7: Expected O, but got Unknown //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown ((Object)myItemDef).name = "VelocityLeecher"; myItemDef.nameToken = "VelocityLeecher"; myItemDef.pickupToken = "VelocityLeecher"; myItemDef.descriptionToken = "VelocityLeecher"; myItemDef.loreToken = "VelocityLeecher"; myItemDef.deprecatedTier = (ItemTier)5; myItemDef.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); myItemDef.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); myItemDef.canRemove = false; myItemDef.hidden = true; myItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)15 }; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(myItemDef, val)); GlobalEventManager.onServerDamageDealt += GlobalEventManager_OnHitEnemy; } private void GlobalEventManager_OnHitEnemy(DamageReport report) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)report.attacker) || !Object.op_Implicit((Object)(object)report.attackerBody)) { return; } CharacterBody attackerBody = report.attackerBody; if (Object.op_Implicit((Object)(object)attackerBody.inventory)) { int itemCount = attackerBody.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0 && attackerBody.characterMotor.velocity.y < 0f) { attackerBody.characterMotor.velocity.y = -0.05f; } } } private void Update() { } } } namespace TrovianSkills.EntityStates { public class Blast : BaseState { public static GameObject viendbomb = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMegaBlasterBigProjectile.prefab").WaitForCompletion(); public static GameObject nanobomb = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(); public static int counter = 0; public override void OnEnter() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Ray aimRay = ((BaseState)this).GetAimRay(); FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = viendbomb; val.position = ((EntityState)this).characterBody.corePosition; val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = 7f * ((EntityState)this).characterBody.damage; val.force = 0f; val.crit = ((BaseState)this).RollCrit(); FireProjectileInfo val2 = val; val = default(FireProjectileInfo); val.projectilePrefab = nanobomb; val.position = ((EntityState)this).characterBody.corePosition; val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = 7f * ((EntityState)this).characterBody.damage; val.force = 0f; val.crit = ((BaseState)this).RollCrit(); FireProjectileInfo val3 = val; if (counter >= 100) { counter = 0; } if (counter % 2 == 0) { ((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right"); Util.PlaySound("Play_huntress_R_snipe_shoot", ((EntityState)this).gameObject); ProjectileManager.instance.FireProjectile(val2); } else { ((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left"); Util.PlaySound("Play_huntress_R_snipe_shoot", ((EntityState)this).gameObject); ProjectileManager.instance.FireProjectile(val3); } counter++; } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.1f && ((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)2; } } public class BlastUp : BaseState { public override void OnEnter() { ((BaseState)this).OnEnter(); Util.PlaySound("Play_huntress_R_snipe_shoot", ((EntityState)this).gameObject); ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); if (((EntityState)this).characterMotor.velocity.y > 0f) { ((EntityState)this).characterMotor.velocity.y += 20f; } else { ((EntityState)this).characterMotor.velocity.y = 30f; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 0.3f && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((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)3; } } public class Overcharge : BaseState { public static float BaseDuration = 0f; public static float BaseDelayDuration = 0f; public static float DamageCoefficient = 7f; public float fireCountdown; public static GameObject viendbomb = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMegaBlasterBigProjectile.prefab").WaitForCompletion(); public static GameObject nanobomb = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(); public static int counter = 0; public override void OnEnter() { ((BaseState)this).OnEnter(); Util.PlaySound("Play_loader_shift_activate", ((EntityState)this).gameObject); } public override void OnExit() { counter = 0; ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: 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_0198: 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) Ray aimRay = ((BaseState)this).GetAimRay(); FireProjectileInfo val = default(FireProjectileInfo); val.projectilePrefab = viendbomb; val.position = ((EntityState)this).characterBody.corePosition; val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = 7f * ((EntityState)this).characterBody.damage; val.force = 0f; val.crit = ((BaseState)this).RollCrit(); FireProjectileInfo val2 = val; val = default(FireProjectileInfo); val.projectilePrefab = nanobomb; val.position = ((EntityState)this).characterBody.corePosition; val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val.owner = ((EntityState)this).gameObject; val.damage = 7f * ((EntityState)this).characterBody.damage; val.force = 0f; val.crit = ((BaseState)this).RollCrit(); FireProjectileInfo val3 = val; ((EntityState)this).FixedUpdate(); fireCountdown -= Time.fixedDeltaTime; if (fireCountdown <= 0f) { fireCountdown = 0.4f / base.attackSpeedStat; if (counter % 3 == 0) { ((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left"); ProjectileManager.instance.FireProjectile(val3); } else { ((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right"); Util.PlaySound("Play_huntress_R_snipe_shoot", ((EntityState)this).gameObject); ProjectileManager.instance.FireProjectile(val2); } counter++; } if (((EntityState)this).fixedAge >= 5f && ((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)2; } } }