using 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 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_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 = ""
};
((Variant)(ref val4)).viewableNode = new Node(val14.skillNameToken, false, (Node)null);
variants5[num5] = 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);
}
}
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);
}
}
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);
}
}
}