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 Cut Skills Revived v0.2.1
BepInEx/plugins/UnusedSkillMod.dll
Decompiled a year agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.Mage.Weapon; using Microsoft.CodeAnalysis; using R2API; using RoR2; using RoR2.ContentManagement; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnusedSkillMod.Content; using UnusedSkillMod.Modules; using UnusedSkillMod.MyEntityStates; [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("UnusedSkillMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f5da516f69912cf7164805285f7349cbdd4b9370")] [assembly: AssemblyProduct("UnusedSkillMod")] [assembly: AssemblyTitle("UnusedSkillMod")] [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 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); } } } namespace UnusedSkillMod { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.zebra.UnusedSkillMod", "UnusedSkillMod", "0.1.0")] public class UnusedSkillModPlugin : BaseUnityPlugin { public const string MODUID = "com.zebra.UnusedSkillMod"; public const string MODNAME = "UnusedSkillMod"; public const string MODVERSION = "0.1.0"; internal static PluginInfo pluginInfo; public static GameObject rocketGhost; public static UnusedSkillModPlugin instance; public void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_0145: 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_0173: Expected O, but got Unknown //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0208: 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_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Expected O, but got Unknown //IL_02e2: 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_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0346: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Expected O, but got Unknown //IL_0466: Unknown result type (might be due to invalid IL or missing references) //IL_0468: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Unknown result type (might be due to invalid IL or missing references) //IL_0477: 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_04ba: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05ca: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Expected O, but got Unknown //IL_05d5: Unknown result type (might be due to invalid IL or missing references) //IL_05d7: Unknown result type (might be due to invalid IL or missing references) //IL_05e1: Unknown result type (might be due to invalid IL or missing references) //IL_05e6: Unknown result type (might be due to invalid IL or missing references) //IL_05f6: Unknown result type (might be due to invalid IL or missing references) //IL_05fb: Unknown result type (might be due to invalid IL or missing references) //IL_0639: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Unknown result type (might be due to invalid IL or missing references) //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_07f1: Unknown result type (might be due to invalid IL or missing references) //IL_07f6: Unknown result type (might be due to invalid IL or missing references) //IL_0836: Unknown result type (might be due to invalid IL or missing references) //IL_08c9: Unknown result type (might be due to invalid IL or missing references) //IL_08ef: Unknown result type (might be due to invalid IL or missing references) //IL_08f9: Expected O, but got Unknown //IL_08fa: Unknown result type (might be due to invalid IL or missing references) //IL_08fc: Unknown result type (might be due to invalid IL or missing references) //IL_0773: Unknown result type (might be due to invalid IL or missing references) //IL_0799: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Expected O, but got Unknown //IL_07a4: Unknown result type (might be due to invalid IL or missing references) //IL_07a6: Unknown result type (might be due to invalid IL or missing references) instance = this; pluginInfo = ((BaseUnityPlugin)this).Info; GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion(); SkillDef val2 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Commando/ThrowGrenade.asset").WaitForCompletion(); LanguageAPI.Add("COMMANDO_SPECIAL_STICKY_NAME", "Sticky Grenade"); LanguageAPI.Add("COMMANDO_SPECIAL_STICKY_DESCRIPTION", "Throw a grenade that sticks to the first surface or entity it lands on and explodes for <style=cIsDamage>700% damage</style> after 3 seconds. Can hold up to 2."); SkillDef val3 = ScriptableObject.CreateInstance<SkillDef>(); val3.activationState = new SerializableEntityStateType(typeof(CommandoStickyGrenade)); val3.activationStateMachineName = "Weapon"; val3.baseMaxStock = 2; val3.baseRechargeInterval = 5f; val3.beginSkillCooldownOnSkillEnd = false; val3.canceledFromSprinting = false; val3.cancelSprintingOnActivation = true; val3.interruptPriority = (InterruptPriority)0; val3.isCombatSkill = true; val3.mustKeyPress = true; val3.rechargeStock = 1; val3.requiredStock = 1; val3.stockToConsume = 1; val3.icon = val2.icon; val3.skillDescriptionToken = "COMMANDO_SPECIAL_STICKY_DESCRIPTION"; val3.skillName = "COMMANDO_SPECIAL_STICKY_NAME"; val3.skillNameToken = "COMMANDO_SPECIAL_STICKY_NAME"; ContentAddition.AddSkillDef(val3); SkillLocator component = val.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val4 = new Variant { skillDef = val3, unlockableName = "bleh 2" }; ((Variant)(ref val4)).viewableNode = new Node(val3.skillNameToken, false, (Node)null); variants[num] = val4; SkillDef val5 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Commando/CommandoBodyFirePistol.asset").WaitForCompletion(); LanguageAPI.Add("COMMANDO_SECONDARY_SHRAPNEL_NAME", "Fire Shrapnel"); LanguageAPI.Add("COMMANDO_SECONDARY_SHRAPNEL_DESCRIPTION", " <style=cIsDamage>Ignite</style>. Fire a bullet that explodes in an 11 meter radius for <style=cIsDamage>600% damage</style>."); SkillDef val6 = ScriptableObject.CreateInstance<SkillDef>(); val6.activationState = new SerializableEntityStateType(typeof(CommandoShrapnel)); val6.activationStateMachineName = "Weapon"; val6.baseMaxStock = 1; val6.baseRechargeInterval = 3f; val6.beginSkillCooldownOnSkillEnd = false; val6.canceledFromSprinting = false; val6.cancelSprintingOnActivation = true; val6.interruptPriority = (InterruptPriority)1; val6.isCombatSkill = true; val6.mustKeyPress = false; val6.rechargeStock = 1; val6.requiredStock = 1; val6.stockToConsume = 1; val6.icon = val5.icon; val6.skillDescriptionToken = "COMMANDO_SECONDARY_SHRAPNEL_DESCRIPTION"; val6.skillName = "COMMANDO_SECONDARY_SHRAPNEL_NAME"; val6.skillNameToken = "COMMANDO_SECONDARY_SHRAPNEL_NAME"; ContentAddition.AddSkillDef(val6); SkillLocator component2 = val.GetComponent<SkillLocator>(); SkillFamily skillFamily2 = component2.secondary.skillFamily; Array.Resize(ref skillFamily2.variants, skillFamily2.variants.Length + 1); Variant[] variants2 = skillFamily2.variants; int num2 = skillFamily2.variants.Length - 1; val4 = new Variant { skillDef = val6, unlockableName = "bleh 3" }; ((Variant)(ref val4)).viewableNode = new Node(val6.skillNameToken, false, (Node)null); variants2[num2] = val4; GameObject val7 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageBody.prefab").WaitForCompletion(); SkillDef val8 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Junk/Mage/MageBodyFireIceBolt.asset").WaitForCompletion(); LanguageAPI.Add("MAGE_PRIMARY_ICEBOLT_NAME", "Ice Bolt"); LanguageAPI.Add("MAGE_PRIMARY_ICEBOLT_DESCRIPTION", "Fire a slowing bolt for <style=cIsDamage>300% damage</style>. Can hold up to 4."); SteppedSkillDef val9 = ScriptableObject.CreateInstance<SteppedSkillDef>(); ((SkillDef)val9).activationState = new SerializableEntityStateType(typeof(FireIceOrb)); ((SkillDef)val9).activationStateMachineName = "Weapon"; ((SkillDef)val9).baseMaxStock = 4; ((SkillDef)val9).baseRechargeInterval = 1.3f; ((SkillDef)val9).beginSkillCooldownOnSkillEnd = false; ((SkillDef)val9).canceledFromSprinting = false; ((SkillDef)val9).cancelSprintingOnActivation = true; ((SkillDef)val9).interruptPriority = (InterruptPriority)0; ((SkillDef)val9).isCombatSkill = true; ((SkillDef)val9).mustKeyPress = false; ((SkillDef)val9).rechargeStock = 1; ((SkillDef)val9).requiredStock = 1; ((SkillDef)val9).stockToConsume = 1; ((SkillDef)val9).icon = val8.icon; ((SkillDef)val9).skillDescriptionToken = "MAGE_PRIMARY_ICEBOLT_DESCRIPTION"; ((SkillDef)val9).skillName = "MAGE_PRIMARY_ICEBOLT_NAME"; ((SkillDef)val9).skillNameToken = "MAGE_PRIMARY_ICEBOLT_NAME"; ContentAddition.AddSkillDef((SkillDef)(object)val9); SkillLocator component3 = val7.GetComponent<SkillLocator>(); SkillFamily skillFamily3 = component3.primary.skillFamily; Array.Resize(ref skillFamily3.variants, skillFamily3.variants.Length + 1); Variant[] variants3 = skillFamily3.variants; int num3 = skillFamily3.variants.Length - 1; val4 = new Variant { skillDef = (SkillDef)(object)val9, unlockableName = "bleh 4" }; ((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val9).skillNameToken, false, (Node)null); variants3[num3] = val4; SkillDef val10 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Commando/CommandoBodyFirePistol.asset").WaitForCompletion(); LanguageAPI.Add("MAGE_SPECIAL_NOVA_NAME", "Ice Nova"); LanguageAPI.Add("MAGE_SPECIAL_NOVA_DESCRIPTION", " <style=cIsDamage>Freeze</style>. Explode an an icy nova in an 15 meter radius for <style=cIsDamage>600% damage</style>."); SkillDef val11 = ScriptableObject.CreateInstance<SkillDef>(); val11.activationState = new SerializableEntityStateType(typeof(MageIceNova)); val11.activationStateMachineName = "Weapon"; val11.baseMaxStock = 1; val11.baseRechargeInterval = 10f; val11.beginSkillCooldownOnSkillEnd = false; val11.canceledFromSprinting = false; val11.cancelSprintingOnActivation = true; val11.interruptPriority = (InterruptPriority)1; val11.isCombatSkill = true; val11.mustKeyPress = false; val11.rechargeStock = 1; val11.requiredStock = 1; val11.stockToConsume = 1; val11.icon = val8.icon; val11.skillDescriptionToken = "MAGE_SPECIAL_NOVA_DESCRIPTION"; val11.skillName = "MAGE_SPECIAL_NOVA_NAME"; val11.skillNameToken = "MAGE_SPECIAL_NOVA_NAME"; ContentAddition.AddSkillDef(val11); SkillLocator component4 = val7.GetComponent<SkillLocator>(); SkillFamily skillFamily4 = component4.special.skillFamily; Array.Resize(ref skillFamily4.variants, skillFamily4.variants.Length + 1); Variant[] variants4 = skillFamily4.variants; int num4 = skillFamily4.variants.Length - 1; val4 = new Variant { skillDef = val11, unlockableName = "bleh 5" }; ((Variant)(ref val4)).viewableNode = new Node(val11.skillNameToken, false, (Node)null); variants4[num4] = val4; GameObject val12 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainBody.prefab").WaitForCompletion(); SkillDef val13 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CaptainShotgun.asset").WaitForCompletion(); LanguageAPI.Add("CAPTAIN_SPECIAL_PLATING_NAME", "Plating Beacon"); LanguageAPI.Add("CAPTAIN_SPECIAL_PLATING_DESCRIPTION", "Call a permanant beacon that, upon interaction will block up to 5 instances of damage."); SkillDef val14 = ScriptableObject.CreateInstance<SkillDef>(); val14.activationState = new SerializableEntityStateType(typeof(CallSupplyDropPlating)); val14.activationStateMachineName = "Weapon"; val14.baseMaxStock = 1; val14.baseRechargeInterval = 1f; val14.beginSkillCooldownOnSkillEnd = true; val14.canceledFromSprinting = false; val14.cancelSprintingOnActivation = true; val14.fullRestockOnAssign = true; val14.interruptPriority = (InterruptPriority)1; val14.isCombatSkill = true; val14.mustKeyPress = false; val14.rechargeStock = 1; val14.requiredStock = 1; val14.stockToConsume = 1; val14.icon = val13.icon; val14.skillDescriptionToken = "CAPTAIN_SPECIAL_PLATING_DESCRIPTION"; val14.skillName = "CAPTAIN_SPECIAL_PLATING_NAME"; val14.skillNameToken = "CAPTAIN_SPECIAL_PLATING_NAME"; ContentAddition.AddSkillDef(val14); SkillLocator component5 = val12.GetComponent<SkillLocator>(); GenericSkill[] components = val12.GetComponents<GenericSkill>(); foreach (GenericSkill val15 in components) { if (val15.skillName.Equals("SupplyDrop1") || val15.skillName.Equals("SupplyDrop2")) { SkillFamily skillFamily5 = val15.skillFamily; Array.Resize(ref skillFamily5.variants, skillFamily5.variants.Length + 1); Variant[] variants5 = skillFamily5.variants; int num5 = skillFamily5.variants.Length - 1; val4 = new Variant { skillDef = val14, unlockableName = "bleh 6" }; ((Variant)(ref val4)).viewableNode = new Node(val14.skillNameToken, false, (Node)null); variants5[num5] = val4; } } LanguageAPI.Add("MAGE_PRIMARY_LIGHTNINGBOLT_NAME", "Lightning Bolt"); LanguageAPI.Add("MAGE_PRIMARY_LIGHTNINGBOLT_DESCRIPTION", "Fire a lightning bolt for <style=cIsDamage>250% damage</style>."); SteppedSkillDef val16 = ScriptableObject.CreateInstance<SteppedSkillDef>(); ((SkillDef)val16).activationState = new SerializableEntityStateType(typeof(FireLaserbolt)); ((SkillDef)val16).activationStateMachineName = "Weapon"; ((SkillDef)val16).baseMaxStock = 1; ((SkillDef)val16).baseRechargeInterval = 1.3f; ((SkillDef)val16).beginSkillCooldownOnSkillEnd = false; ((SkillDef)val16).canceledFromSprinting = false; ((SkillDef)val16).cancelSprintingOnActivation = true; ((SkillDef)val16).interruptPriority = (InterruptPriority)0; ((SkillDef)val16).isCombatSkill = true; ((SkillDef)val16).mustKeyPress = false; ((SkillDef)val16).rechargeStock = 1; ((SkillDef)val16).requiredStock = 1; ((SkillDef)val16).stockToConsume = 0; ((SkillDef)val16).icon = val8.icon; ((SkillDef)val16).skillDescriptionToken = "MAGE_PRIMARY_LIGHTNINGBOLT_DESCRIPTION"; ((SkillDef)val16).skillName = "MAGE_PRIMARY_LIGHTNINGBOLT_NAME"; ((SkillDef)val16).skillNameToken = "MAGE_PRIMARY_LIGHTNINGBOLT_NAME"; ContentAddition.AddSkillDef((SkillDef)(object)val9); Array.Resize(ref skillFamily3.variants, skillFamily3.variants.Length + 1); Variant[] variants6 = skillFamily3.variants; int num6 = skillFamily3.variants.Length - 1; val4 = new Variant { skillDef = (SkillDef)(object)val16, unlockableName = "bleh 4" }; ((Variant)(ref val4)).viewableNode = new Node(((SkillDef)val16).skillNameToken, false, (Node)null); variants6[num6] = val4; UnusedSkillModAssets.CreateEffects(); UnusedSkillModAssets.CreateProjectiles(); new ContentPacks().Initialize(); } } } namespace UnusedSkillMod.MyEntityStates { public class CommandoShrapnel : BaseState { public static GameObject effectPrefab; public static GameObject hitEffectPrefab = UnusedSkillModAssets.commandoHitEffectPrefab; public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/TracerCommandoDefault"); public static float damageCoefficient = 1.5f; public static float blastRadius = 6.5f; public static float force = 1f; public static float minSpread = 0f; public static float maxSpread = 0f; public static int bulletCount = 1; public static float baseDuration = 2f; public static string attackSoundString = "Play_commando_R"; public static float maxDistance; private float duration; private Ray modifiedAimRay; public override void OnEnter() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_00ff: 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_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Expected O, but got Unknown //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_0221: 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_012f: Expected O, but got Unknown //IL_0151: 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_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_019d: 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_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: 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_01e4: Expected O, but got Unknown ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; modifiedAimRay = ((BaseState)this).GetAimRay(); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); string text = "MuzzleLeft"; string text2 = "MuzzleRight"; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } ((EntityState)this).PlayAnimation("Gesture, Additive", "FireFMJ", "FireFMJ.playbackRate", duration, 0f); ((EntityState)this).PlayAnimation("Gesture, Override", "FireFMJ", "FireFMJ.playbackRate", duration, 0f); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, true); EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text2, true); } if (((EntityState)this).isAuthority) { RaycastHit val = default(RaycastHit); if (Physics.Raycast(modifiedAimRay, ref val, 1000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.enemyBody)).mask))) { BlastAttack val2 = new BlastAttack(); val2.attacker = ((EntityState)this).gameObject; val2.inflictor = ((EntityState)this).gameObject; val2.teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject); val2.baseDamage = base.damageStat * damageCoefficient; val2.baseForce = force * 0.2f; val2.position = ((RaycastHit)(ref val)).point; val2.radius = blastRadius; val2.falloffModel = (FalloffModel)0; val2.damageType = DamageTypeCombo.op_Implicit((DamageType)128); val2.Fire(); EffectManager.SpawnEffect(UnusedSkillModAssets.shootExplosion, new EffectData { origin = val2.position, scale = blastRadius }, true); } BulletAttack val3 = new BulletAttack(); val3.owner = ((EntityState)this).gameObject; val3.weapon = ((EntityState)this).gameObject; val3.origin = ((Ray)(ref modifiedAimRay)).origin; val3.aimVector = ((Ray)(ref modifiedAimRay)).direction; val3.radius = 0.15f; val3.minSpread = minSpread; val3.maxSpread = maxSpread; val3.bulletCount = ((bulletCount > 0) ? ((uint)bulletCount) : 0u); val3.damage = 7f; val3.procCoefficient = 0f; val3.force = 0f; val3.tracerEffectPrefab = tracerEffectPrefab; val3.muzzleName = text; val3.hitEffectPrefab = hitEffectPrefab; val3.isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master); val3.Fire(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).outer.SetNextStateToMain(); } 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)0; } } public class CommandoStickyGrenade : GenericProjectileBaseState { public float damageCoefficient = 7f; public float duration = 1f; public override void OnEnter() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: 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_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) ((GenericProjectileBaseState)this).OnEnter(); Util.PlaySound("Play_commando_M2_grenade_throw", ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { ProjectileManager.instance.FireProjectile(UnusedSkillModAssets.commandoStickyPrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, damageCoefficient * ((BaseState)this).damageStat, 0f, Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Additive", "ThrowGrenade", "FireFMJ.playbackRate", duration * 0.4f, 0f); ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowGrenade", "FireFMJ.playbackRate", duration * 0.4f, 0f); } } public override void OnExit() { ((GenericProjectileBaseState)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 FireIceOrb : BaseState, IStepSetter { public enum Gauntlet { Left, Right } public static GameObject projectilePrefab = UnusedSkillModAssets.artiOrbPrefab; public static GameObject effectPrefab = UnusedSkillModAssets.mageIceMuzzle; public static float baseDuration = 0.3f; public static float damageCoefficient = 3f; public static string attackString; private float duration; private bool hasFiredGauntlet; private string muzzleString; private Animator animator; public Gauntlet gauntlet; public void SetStep(int i) { gauntlet = (Gauntlet)i; } public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; switch (gauntlet) { case Gauntlet.Left: muzzleString = "MuzzleLeft"; ((EntityState)this).PlayAnimation("Gesture Left, Additive", "FireGauntletLeft", "FireGauntlet.playbackRate", duration, 0f); break; case Gauntlet.Right: muzzleString = "MuzzleRight"; ((EntityState)this).PlayAnimation("Gesture Right, Additive", "FireGauntletRight", "FireGauntlet.playbackRate", duration, 0f); break; } ((EntityState)this).PlayAnimation("Gesture, Additive", "HoldGauntletsUp", "FireGauntlet.playbackRate", duration, 0f); Util.PlaySound(attackString, ((EntityState)this).gameObject); animator = ((EntityState)this).GetModelAnimator(); ((EntityState)this).characterBody.SetAimTimer(2f); FireGauntlet(); } public override void OnExit() { ((EntityState)this).OnExit(); } private void FireGauntlet() { //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_004e: 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_005a: Unknown result type (might be due to invalid IL or missing references) hasFiredGauntlet = true; Ray aimRay = ((BaseState)this).GetAimRay(); if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, muzzleString, 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?)null); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (animator.GetFloat("FireGauntlet.fire") > 0f && !hasFiredGauntlet) { FireGauntlet(); } 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 MageIceNova : BaseState { public static GameObject impactEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteIce/AffixWhiteImpactEffect.prefab").WaitForCompletion(); public static GameObject novaEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteIce/AffixWhiteExplosion.prefab").WaitForCompletion(); public static float baseStartDuration = 0.3f; public static float baseEndDuration = 2f; public static float damageCoefficient = 6f; public static float procCoefficient = 1f; public static float force = 20f; public static float novaRadius = 15f; public static string attackString; private float stopwatch; private float startDuration; private float endDuration; private bool hasCastNova; public override void OnEnter() { //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_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: 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_00e7: 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_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_010f: Expected O, but got Unknown ((BaseState)this).OnEnter(); stopwatch = 0f; endDuration = baseEndDuration / base.attackSpeedStat; startDuration = baseStartDuration / base.attackSpeedStat; BlastAttack val = new BlastAttack { radius = novaRadius, procCoefficient = procCoefficient, position = ((EntityState)this).transform.position, attacker = ((EntityState)this).gameObject, crit = Util.CheckRoll(((EntityState)this).characterBody.crit, ((EntityState)this).characterBody.master), baseDamage = ((EntityState)this).characterBody.damage * damageCoefficient, falloffModel = (FalloffModel)0, damageType = DamageTypeCombo.op_Implicit((DamageType)256), baseForce = force }; val.teamIndex = TeamComponent.GetObjectTeam(val.attacker); val.Fire(); EffectManager.SpawnEffect(novaEffectPrefab, new EffectData { origin = ((EntityState)this).transform.position, scale = novaRadius }, true); ((EntityState)this).PlayAnimation("Gesture, Additive", "FireWall"); ((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)1; } } } namespace UnusedSkillMod.Modules { internal class Content { internal static void AddCharacterBodyPrefab(GameObject bprefab) { ContentPacks.bodyPrefabs.Add(bprefab); } internal static void AddMasterPrefab(GameObject prefab) { ContentPacks.masterPrefabs.Add(prefab); } internal static void AddProjectilePrefab(GameObject prefab) { ContentPacks.projectilePrefabs.Add(prefab); } internal static void AddSurvivorDef(SurvivorDef survivorDef) { ContentPacks.survivorDefs.Add(survivorDef); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, float sortPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, sortPosition); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, unlockableDef, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef, float sortPosition) { //IL_0016: 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) SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>(); val.bodyPrefab = bodyPrefab; val.displayPrefab = displayPrefab; val.primaryColor = charColor; val.cachedName = ((Object)bodyPrefab).name.Replace("Body", ""); val.displayNameToken = tokenPrefix + "NAME"; val.descriptionToken = tokenPrefix + "DESCRIPTION"; val.outroFlavorToken = tokenPrefix + "OUTRO_FLAVOR"; val.mainEndingEscapeFailureFlavorToken = tokenPrefix + "OUTRO_FAILURE"; val.desiredSortPosition = sortPosition; val.unlockableDef = unlockableDef; AddSurvivorDef(val); } internal static void AddUnlockableDef(UnlockableDef unlockableDef) { ContentPacks.unlockableDefs.Add(unlockableDef); } internal static UnlockableDef CreateAndAddUnlockableDef(string identifier, string nameToken, Sprite achievementIcon) { UnlockableDef val = ScriptableObject.CreateInstance<UnlockableDef>(); val.cachedName = identifier; val.nameToken = nameToken; val.achievementIcon = achievementIcon; AddUnlockableDef(val); return val; } internal static void AddSkillDef(SkillDef skillDef) { ContentPacks.skillDefs.Add(skillDef); } internal static void AddSkillFamily(SkillFamily skillFamily) { ContentPacks.skillFamilies.Add(skillFamily); } internal static void AddEntityState(Type entityState) { ContentPacks.entityStates.Add(entityState); } internal static void AddBuffDef(BuffDef buffDef) { ContentPacks.buffDefs.Add(buffDef); } internal static BuffDef CreateAndAddBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff, bool isCooldown) { //IL_0010: 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) BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); ((Object)val).name = buffName; val.buffColor = buffColor; val.canStack = canStack; val.isDebuff = isDebuff; val.isCooldown = isCooldown; val.eliteDef = null; val.iconSprite = buffIcon; AddBuffDef(val); return val; } internal static void AddEffectDef(EffectDef effectDef) { ContentPacks.effectDefs.Add(effectDef); } internal static EffectDef CreateAndAddEffectDef(GameObject effectPrefab) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown EffectDef val = new EffectDef(effectPrefab); AddEffectDef(val); return val; } internal static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef) { ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef); } internal static NetworkSoundEventDef CreateAndAddNetworkSoundEventDef(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance<NetworkSoundEventDef>(); val.eventName = eventName; AddNetworkSoundEventDef(val); return val; } } internal class ContentPacks : IContentPackProvider { internal ContentPack contentPack = new ContentPack(); public static List<GameObject> bodyPrefabs = new List<GameObject>(); public static List<GameObject> masterPrefabs = new List<GameObject>(); public static List<GameObject> projectilePrefabs = new List<GameObject>(); public static List<SurvivorDef> survivorDefs = new List<SurvivorDef>(); public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>(); public static List<SkillFamily> skillFamilies = new List<SkillFamily>(); public static List<SkillDef> skillDefs = new List<SkillDef>(); public static List<Type> entityStates = new List<Type>(); public static List<BuffDef> buffDefs = new List<BuffDef>(); public static List<EffectDef> effectDefs = new List<EffectDef>(); public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>(); public string identifier => "com.zebra.UnusedSkillMod"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.identifier = identifier; contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); contentPack.survivorDefs.Add(survivorDefs.ToArray()); contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); contentPack.skillDefs.Add(skillDefs.ToArray()); contentPack.skillFamilies.Add(skillFamilies.ToArray()); contentPack.entityStateTypes.Add(entityStates.ToArray()); contentPack.buffDefs.Add(buffDefs.ToArray()); contentPack.effectDefs.Add(effectDefs.ToArray()); contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } } namespace UnusedSkillMod.Content { public static class UnusedSkillModAssets { internal static GameObject commandoTracer; internal static GameObject shootExplosion; internal static GameObject commandoStickyPrefab; internal static GameObject artiOrbPrefab; internal static GameObject engiImpactPrefab; internal static GameObject commandoHitEffectPrefab; internal static GameObject mageIceBlast; internal static GameObject mageIceMuzzle; public static void CreateEffects() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //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_004a: 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) shootExplosion = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/OmniExplosionVFXCommandoGrenade.prefab").WaitForCompletion(); ContentAddition.AddEffect(shootExplosion); mageIceBlast = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/IceCullExplosion.prefab").WaitForCompletion(); ContentAddition.AddEffect(mageIceBlast); mageIceMuzzle = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MuzzleflashMageIceLarge.prefab").WaitForCompletion(); ContentAddition.AddEffect(mageIceMuzzle); } public static void CreateProjectiles() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_006c: 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_00ad: 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) commandoStickyPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Commando/CommandoStickyGrenadeProjectile.prefab").WaitForCompletion(), "CommandoGrenadeClone"); ProjectileImpactExplosion component = commandoStickyPrefab.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component).falloffModel = (FalloffModel)0; ((ProjectileExplosion)component).explosionSoundString = "Play_commando_M2_grenade_explo"; ProjectileStickOnImpact component2 = commandoStickyPrefab.gameObject.GetComponent<ProjectileStickOnImpact>(); component2.ignoreWorld = false; UnusedSkillMod.Modules.Content.AddProjectilePrefab(commandoStickyPrefab); artiOrbPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Mage/MageIceBolt.prefab").WaitForCompletion(), "MageIceBoltClone"); ProjectileSimple component3 = artiOrbPrefab.GetComponent<ProjectileSimple>(); component3.velocity = 100f; ProjectileDamage componentInChildren = artiOrbPrefab.GetComponentInChildren<ProjectileDamage>(); componentInChildren.damageType = DamageTypeCombo.op_Implicit((DamageType)8); ProjectileImpactExplosion component4 = artiOrbPrefab.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component4).falloffModel = (FalloffModel)1; ((ProjectileExplosion)component4).blastRadius = 4f; component4.impactEffect = mageIceBlast; UnusedSkillMod.Modules.Content.AddProjectilePrefab(artiOrbPrefab); } } }