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 MandoGaming v1.4.6
MandoGamingRewrite.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Commando.CommandoWeapon; using EntityStates.Mage.Weapon; using MandoGaming; using MandoGamingRewrite.EntityStates; using MandoGamingRewrite.Keywords; using MandoGamingRewrite.Projectiles; using MandoGamingRewrite.Unlocks; using On.RoR2; using R2API; using RoR2; using RoR2.Achievements; using RoR2.Orbs; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [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.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("MandoGamingRewrite")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MandoGamingRewrite")] [assembly: AssemblyTitle("MandoGamingRewrite")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace MandoGaming { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("HIFU.MandoGaming", "MandoGaming", "1.4.5")] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.MandoGaming"; public const string PluginAuthor = "HIFU"; public const string PluginName = "MandoGaming"; public const string PluginVersion = "1.4.5"; public static ConfigFile MandoGamingConfig; public static ManualLogSource MandoGamingLogger; public static AssetBundle mandogaming; public void Awake() { //IL_00e7: 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_010b: Unknown result type (might be due to invalid IL or missing references) MandoGamingLogger = ((BaseUnityPlugin)this).Logger; MandoGamingConfig = ((BaseUnityPlugin)this).Config; mandogaming = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("MandoGamingRewrite.dll", "mandogaming")); Unlocks.Create(); Keywords.Create(); HeavyTapTracer.Create(); PlasmaTapTracer.Create(); IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(SkillDefBase)) select type; MandoGamingLogger.LogInfo((object)"==+----------------==SKILLS==----------------+=="); foreach (Type item in enumerable) { SkillDefBase skillDefBase = (SkillDefBase)Activator.CreateInstance(item); if (ValidateSkillDef(skillDefBase)) { skillDefBase.Init(); } } bool flag = default(bool); ContentAddition.AddEntityState(typeof(HeavyTapState), ref flag); ContentAddition.AddEntityState(typeof(PlasmaTapState), ref flag); ContentAddition.AddEntityState(typeof(PRFRVWildfireStormState), ref flag); } public bool ValidateSkillDef(SkillDefBase sdb) { if (sdb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(sdb.NameText, "Enable?", true, "Vanilla is false").Value) { return true; } return false; } } public abstract class SkillDefBase { public SkillDef skillDef; public SkillLocator commandoSkillLocator = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion().GetComponent<SkillLocator>(); public abstract string NameToken { get; } public abstract string NameText { get; } public abstract string DescriptionText { get; } public abstract SerializableEntityStateType ActivationState { get; } public abstract string ActivationStateMachineName { get; } public abstract int BaseMaxStock { get; } public abstract float BaseRechargeInterval { get; } public abstract bool BeginSkillCooldownOnSkillEnd { get; } public abstract bool CanceledFromSprinting { get; } public abstract bool CancelSprintingOnActivation { get; } public virtual bool FullRestockOnAssign { get; } = true; public abstract InterruptPriority SkillInterruptPriority { get; } public abstract bool IsCombatSkill { get; } public abstract bool MustKeyPress { get; } public abstract int RechargeStock { get; } public abstract Sprite Icon { get; } public abstract int StockToConsume { get; } public abstract string[] KeywordTokens { get; } public abstract bool ResetCooldownTimerOnUse { get; } public abstract int RequiredStock { get; } public abstract SkillSlot SkillSlot { get; } public virtual bool isEnabled { get; } = true; public abstract UnlockableDef UnlockableDef { get; } public T ConfigOption<T>(T value, string name, string description) { return Main.MandoGamingConfig.Bind<T>(NameText, name, value, description).Value; } public string d(float f) { return f * 100f + "%"; } public virtual void Init() { //IL_007b: 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_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Expected O, but got Unknown //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) string text = "COMMANDO_" + NameToken.ToUpper() + "_NAME"; string text2 = "COMMANDO_" + NameToken.ToUpper() + "_DESCRIPTION"; LanguageAPI.Add(text, NameText); LanguageAPI.Add(text2, DescriptionText); skillDef = ScriptableObject.CreateInstance<SkillDef>(); skillDef.skillNameToken = text; skillDef.skillDescriptionToken = text2; skillDef.activationState = ActivationState; skillDef.activationStateMachineName = ActivationStateMachineName; skillDef.baseMaxStock = BaseMaxStock; skillDef.baseRechargeInterval = BaseRechargeInterval; skillDef.beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd; skillDef.canceledFromSprinting = CanceledFromSprinting; skillDef.cancelSprintingOnActivation = CancelSprintingOnActivation; skillDef.fullRestockOnAssign = FullRestockOnAssign; skillDef.interruptPriority = SkillInterruptPriority; skillDef.isCombatSkill = IsCombatSkill; skillDef.mustKeyPress = MustKeyPress; skillDef.rechargeStock = RechargeStock; skillDef.icon = Icon; skillDef.stockToConsume = StockToConsume; skillDef.keywordTokens = KeywordTokens; skillDef.resetCooldownTimerOnUse = ResetCooldownTimerOnUse; skillDef.requiredStock = RequiredStock; ContentAddition.AddSkillDef(skillDef); SkillFamily skillFamily = commandoSkillLocator.GetSkill(SkillSlot).skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = skillDef, unlockableDef = UnlockableDef }; ((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val; Main.MandoGamingLogger.LogInfo((object)("Added " + NameText)); } } public abstract class SkillDefBase<T> : SkillDefBase where T : SkillDefBase<T> { public static T instance { get; set; } public SkillDefBase() { if (instance != null) { throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice"); } instance = this as T; } } } namespace MandoGaming.Skills { public class HeavyTapSD : SkillDefBase { public override string NameToken => "HEAVYTAP"; public override string NameText => "Heavy Tap"; public override string DescriptionText => "<style=cIsDamage>Frictionless</style>. Shoot twice for <style=cIsDamage>2x155% damage</style>."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(HeavyTapState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 1f; public override bool BeginSkillCooldownOnSkillEnd => true; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => true; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => false; public override int RechargeStock => 0; public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("HeavyTap.png"); public override int StockToConsume => 0; public override string[] KeywordTokens => new string[1] { "KEYWORD_FRICTIONLESS" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)0; public override UnlockableDef UnlockableDef => Unlocks.heavyTap; } public class PlasmaTapSD : SkillDefBase { public override string NameToken => "PLASMATAP"; public override string NameText => "Plasma Tap"; public override string DescriptionText => "<style=cIsDamage>Arcing</style>. Fire a burst of lightning that deals <style=cIsDamage>100% damage</style> in a cone."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(PlasmaTapState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 1f; public override bool BeginSkillCooldownOnSkillEnd => false; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => true; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => false; public override int RechargeStock => 1; public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("PlasmaTap.png"); public override int StockToConsume => 0; public override string[] KeywordTokens => new string[1] { "KEYWORD_ARC" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)0; public override UnlockableDef UnlockableDef => Unlocks.plasmaTap; } public class PRFRVWildfireStormSD : SkillDefBase { public override string NameToken => "PRFRVWILDFIRESTORM"; public override string NameText => "PRFR-V Wildfire Storm"; public override string DescriptionText => "Fire a continuous stream of flame that deals <style=cIsDamage>550% damage</style> per second and has a chance to <style=cIsDamage>ignite</style> enemies."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(PRFRVWildfireStormState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 4f; public override bool BeginSkillCooldownOnSkillEnd => false; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => true; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => true; public override int RechargeStock => 1; public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("PRFRVWildfireStorm.png"); public override int StockToConsume => 1; public override string[] KeywordTokens => null; public override bool ResetCooldownTimerOnUse => false; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)1; public override UnlockableDef UnlockableDef => Unlocks.prfrVWildfireStorm; } } namespace MandoGamingRewrite.Unlocks { [RegisterAchievement("CommandoHeavyTap", "Commando.Skills_HeavyTap", null, null)] public class HeavyTapAchievement : BaseAchievement { private int primaryUseCount; public override BodyIndex LookUpRequiredBodyIndex() { //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_000e: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex("CommandoBody"); } public override void OnBodyRequirementMet() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown ((BaseAchievement)this).OnBodyRequirementMet(); CharacterBody.OnSkillActivated += new hook_OnSkillActivated(CharacterBody_OnSkillActivated); TeleporterInteraction.onTeleporterChargedGlobal += TeleporterInteraction_onTeleporterChargedGlobal; Run.onRunStartGlobal += Run_onRunStartGlobal; Stage.onServerStageBegin += Stage_onServerStageBegin; } public override void OnBodyRequirementBroken() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown CharacterBody.OnSkillActivated -= new hook_OnSkillActivated(CharacterBody_OnSkillActivated); TeleporterInteraction.onTeleporterChargedGlobal -= TeleporterInteraction_onTeleporterChargedGlobal; Run.onRunStartGlobal -= Run_onRunStartGlobal; Stage.onServerStageBegin -= Stage_onServerStageBegin; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void Run_onRunStartGlobal(Run obj) { primaryUseCount = 0; } private void Stage_onServerStageBegin(Stage obj) { primaryUseCount = 0; } private void TeleporterInteraction_onTeleporterChargedGlobal(TeleporterInteraction _) { if (primaryUseCount == 0) { ((BaseAchievement)this).Grant(); } } private void CharacterBody_OnSkillActivated(orig_OnSkillActivated orig, CharacterBody self, GenericSkill skill) { LocalUser localUser = ((BaseAchievement)this).localUser; if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)self == (Object)(object)((BaseAchievement)this).localUser.cachedBody && (Object)(object)skill == (Object)(object)((BaseAchievement)this).localUser.cachedBody.skillLocator.primary) { primaryUseCount++; } orig.Invoke(self, skill); } } [RegisterAchievement("CommandoPlasmaTap", "Commando.Skills_PlasmaTap", null, null)] public class PlasmaTapAchievement : BaseAchievement { private float zapCount; public override BodyIndex LookUpRequiredBodyIndex() { //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_000e: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex("CommandoBody"); } public override void OnBodyRequirementMet() { ((BaseAchievement)this).OnBodyRequirementMet(); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; Run.onRunStartGlobal += Run_onRunStartGlobal; } public override void OnBodyRequirementBroken() { GlobalEventManager.onServerDamageDealt -= GlobalEventManager_onServerDamageDealt; Run.onRunStartGlobal -= Run_onRunStartGlobal; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void Run_onRunStartGlobal(Run obj) { zapCount = 0f; } private void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { LocalUser localUser = ((BaseAchievement)this).localUser; if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody) { if (((ProcChainMask)(ref damageReport.damageInfo.procChainMask)).HasProc((ProcType)3)) { zapCount += 1f; } if (zapCount >= 70f) { ((BaseAchievement)this).Grant(); } } } } [RegisterAchievement("CommandoPRFRVWildfireStorm", "Commando.Skills_PRFRVWildfireStorm", null, null)] public class PRFRVWildfireStormAchievement : BaseAchievement { private float igniteCount; public override BodyIndex LookUpRequiredBodyIndex() { //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_000e: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex("CommandoBody"); } public override void OnBodyRequirementMet() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown ((BaseAchievement)this).OnBodyRequirementMet(); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; GlobalEventManager.ProcIgniteOnKill += new hook_ProcIgniteOnKill(GlobalEventManager_ProcIgniteOnKill); Run.onRunStartGlobal += Run_onRunStartGlobal; Stage.onServerStageBegin += Stage_onServerStageBegin; } public override void OnBodyRequirementBroken() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown GlobalEventManager.onServerDamageDealt -= GlobalEventManager_onServerDamageDealt; GlobalEventManager.ProcIgniteOnKill -= new hook_ProcIgniteOnKill(GlobalEventManager_ProcIgniteOnKill); Run.onRunStartGlobal -= Run_onRunStartGlobal; Stage.onServerStageBegin -= Stage_onServerStageBegin; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void Run_onRunStartGlobal(Run obj) { igniteCount = 0f; } private void Stage_onServerStageBegin(Stage obj) { igniteCount = 0f; } private void GlobalEventManager_ProcIgniteOnKill(orig_ProcIgniteOnKill orig, DamageReport damageReport, int igniteOnKillCount, CharacterBody victimBody, TeamIndex attackerTeamIndex) { //IL_0074: Unknown result type (might be due to invalid IL or missing references) LocalUser localUser = ((BaseAchievement)this).localUser; if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody) { if (igniteOnKillCount > 0) { igniteCount += 1f; } if (igniteCount >= 30f) { ((BaseAchievement)this).Grant(); } } orig.Invoke(damageReport, igniteOnKillCount, victimBody, attackerTeamIndex); } private void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Invalid comparison between Unknown and I4 LocalUser localUser = ((BaseAchievement)this).localUser; if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody) { if ((damageReport.damageInfo.damageType & 0x80) > 0) { igniteCount += 1f; } if (igniteCount >= 30f) { ((BaseAchievement)this).Grant(); } } } } public static class Unlocks { public static UnlockableDef heavyTap; public static UnlockableDef plasmaTap; public static UnlockableDef prfrVWildfireStorm; public static void Create() { heavyTap = ScriptableObject.CreateInstance<UnlockableDef>(); heavyTap.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("HeavyTap.png"); heavyTap.cachedName = "Commando.Skills_HeavyTap"; heavyTap.nameToken = "ACHIEVEMENT_COMMANDOHEAVYTAP_NAME"; LanguageAPI.Add("ACHIEVEMENT_COMMANDOHEAVYTAP_NAME", "Commando: Have a Blast"); LanguageAPI.Add("ACHIEVEMENT_COMMANDOHEAVYTAP_DESCRIPTION", "As Commando, complete a stage without using your Primary skill."); plasmaTap = ScriptableObject.CreateInstance<UnlockableDef>(); plasmaTap.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("PlasmaTap.png"); plasmaTap.cachedName = "Commando.Skills_PlasmaTap"; plasmaTap.nameToken = "ACHIEVEMENT_COMMANDOPLASMATAP_NAME"; LanguageAPI.Add("ACHIEVEMENT_COMMANDOPLASMATAP_NAME", "Commando: Arch Essence"); LanguageAPI.Add("ACHIEVEMENT_COMMANDOPLASMATAP_DESCRIPTION", "As Commando, chain lightning 70 times in a single run."); prfrVWildfireStorm = ScriptableObject.CreateInstance<UnlockableDef>(); prfrVWildfireStorm.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("PRFRVWildfireStorm.png"); prfrVWildfireStorm.cachedName = "Commando.Skills_PRFRVWildfireStorm"; prfrVWildfireStorm.nameToken = "ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_NAME"; prfrVWildfireStorm.sortScore = plasmaTap.sortScore + 1; LanguageAPI.Add("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_NAME", "Commando: Catch Fire"); LanguageAPI.Add("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_DESCRIPTION", "As Commando, burn enemies 30 times on a single stage."); ContentAddition.AddUnlockableDef(heavyTap); ContentAddition.AddUnlockableDef(plasmaTap); ContentAddition.AddUnlockableDef(prfrVWildfireStorm); } } } namespace MandoGamingRewrite.Projectiles { public static class HeavyTapTracer { public static GameObject prefab; public static void Create() { //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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_009f: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Bandit/TracerBanditShotgun.prefab").WaitForCompletion(), "HeavyTapTracer", false); Tracer component = prefab.GetComponent<Tracer>(); component.length *= 1.8f; component.beamDensity *= 1.5f; LineRenderer[] componentsInChildren = ((Component)component).GetComponentsInChildren<LineRenderer>(); foreach (LineRenderer val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val)) { val.endColor = new Color(0.025f, 0.02f, 0.3f); val.startColor = new Color(0.2f, 0.175f, 0.7f); } } ((Component)component).gameObject.AddComponent<VFXAttributes>(); ((Component)component).GetComponent<VFXAttributes>().vfxPriority = (VFXPriority)1; ((Component)component).GetComponent<VFXAttributes>().vfxIntensity = (VFXIntensity)1; ContentAddition.AddEffect(((Component)component).gameObject); } } public static class PlasmaTapTracer { public static GameObject prefab; public static void Create() { //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_0057: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/TracerHuntressSnipe.prefab").WaitForCompletion(), "PlasmaTapTracer", false); Tracer component = prefab.GetComponent<Tracer>(); component.length = 40f; component.beamDensity = 5f; ((Component)component).gameObject.AddComponent<VFXAttributes>(); ((Component)component).GetComponent<VFXAttributes>().vfxPriority = (VFXPriority)2; ((Component)component).GetComponent<VFXAttributes>().vfxIntensity = (VFXIntensity)2; LineRenderer component2 = ((Component)((Component)component).transform.Find("TracerHead")).GetComponent<LineRenderer>(); component2.startColor = new Color(0.1f, 0.2f, 0.7f); Material val = Object.Instantiate<Material>(((Renderer)component2).material); val.SetColor("_TintColor", new Color(0.1f, 0.2f, 0.7f)); ((Renderer)component2).material = val; component2.startWidth *= 0.4f; component2.endWidth *= 0.4f; ContentAddition.AddEffect(((Component)component).gameObject); } } } namespace MandoGamingRewrite.Keywords { public static class Keywords { public static void Create() { LanguageAPI.Add("KEYWORD_ARC", "<style=cKeywordName>Arcing</style><style=cSub>Arc lighting up to 4 enemies for 30% damage per hit.</style>"); LanguageAPI.Add("KEYWORD_FRICTIONLESS", "<style=cKeywordName>Frictionless</style><style=cSub>Suffers no damage falloff.</style>"); } } } namespace MandoGamingRewrite.EntityStates { internal class HeavyTapState : BaseSkillState { public float duration; public static float baseDuration = 0.15f; public static float secondDuration = 0.35f; public int remainingShots = 2; public bool finalShot = false; public static string fireHeavyPistolSoundString = "play_bandit_M2_shot"; public GameObject tracerEffectPrefab = HeavyTapTracer.prefab; public GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/Hitspark1"); public static float recoilAmplitude = 1f; private Ray aimRay; public static float maxRange = 250f; public static float damageCoefficient = 1.55f; public static float force = 40f; public override void OnEnter() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; if (finalShot) { duration = secondDuration / ((BaseState)this).attackSpeedStat; } aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); if (remainingShots % 2 == 0) { ((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left"); FireBullet("MuzzleLeft"); } else { ((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right"); FireBullet("MuzzleRight"); } } public void FireBullet(string targetMuzzle) { //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound(fireHeavyPistolSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)FirePistol2.muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false); } ((BaseState)this).AddRecoil(-0.45f * recoilAmplitude, 0.9f * recoilAmplitude, -0.34f * recoilAmplitude, 0.34f * recoilAmplitude); if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, damage = damageCoefficient * ((BaseState)this).damageStat, force = force, tracerEffectPrefab = tracerEffectPrefab, muzzleName = targetMuzzle, hitEffectPrefab = hitEffectPrefab, isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), radius = 0.4f, smartCollision = true, falloffModel = (FalloffModel)0, maxDistance = maxRange, procCoefficient = 0.9f }.Fire(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge < duration || !((EntityState)this).isAuthority) { return; } remainingShots--; if (remainingShots == 0) { duration = baseDuration; finalShot = false; ((EntityState)this).outer.SetNextStateToMain(); return; } HeavyTapState heavyTapState = new HeavyTapState(); if (remainingShots == 1) { heavyTapState.finalShot = true; } heavyTapState.remainingShots = remainingShots; ((EntityState)this).outer.SetNextState((EntityState)(object)heavyTapState); } 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; } } internal class PlasmaTapState : BaseSkillState, IStepSetter { public float duration; public static float baseDuration = 0.25f; public static float maxRange = 100f; public int pistol = 2; private Ray aimRay; public static float damageCoefficient = 1f; public static float damageArcing = 0.3f; public GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/LightningFlash"); public static string attackSoundString = "Play_item_proc_chain_lightning"; public static float recoilAmplitude = 1f; private HurtBox initialOrbTarget; private readonly BullseyeSearch search = new BullseyeSearch(); private ChildLocator childLocator; private Transform modelTransform; void IStepSetter.SetStep(int i) { pistol = i; } 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); } if (pistol % 2 == 0) { ((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left"); FireBullet("MuzzleLeft"); } else { ((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right"); FireBullet("MuzzleRight"); } SearchForTarget(aimRay); FireOrb(); } private void SearchForTarget(Ray aimRay) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) search.teamMaskFilter = TeamMask.GetUnprotectedTeams(((EntityState)this).teamComponent.teamIndex); search.filterByLoS = true; search.searchOrigin = ((Ray)(ref aimRay)).origin; search.searchDirection = ((Ray)(ref aimRay)).direction; search.sortMode = (SortMode)1; search.maxDistanceFilter = 100f; search.maxAngleFilter = 360f; search.RefreshCandidates(); search.FilterOutGameObject(((EntityState)this).gameObject); initialOrbTarget = search.GetResults().FirstOrDefault(); } private void FireOrb() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_0092: 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_00a5: Expected O, but got Unknown //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { LightningOrb val = new LightningOrb { lightningType = (LightningType)0, damageValue = damageArcing * ((BaseState)this).damageStat, isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), attacker = ((EntityState)this).gameObject, procCoefficient = 0.15f, bouncesRemaining = 1, speed = 120f, bouncedObjects = new List<HealthComponent>(), range = 30f, targetsToFindPerBounce = 3 }; HurtBox val2 = initialOrbTarget; if (Object.op_Implicit((Object)(object)val2)) { Transform val3 = childLocator.FindChild("HandR"); Transform val4 = childLocator.FindChild("HandL"); ((Orb)val).origin = ((pistol % 2 == 0) ? val4.position : val3.position); ((Orb)val).target = val2; OrbManager.instance.AddOrb((Orb)(object)val); } } } public void FireBullet(string targetMuzzle) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); Util.PlaySound("Play_mage_m1_cast_lightning", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)FirePistol2.muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false); } ((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, 0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude); if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, damage = damageCoefficient * ((BaseState)this).damageStat, tracerEffectPrefab = PlasmaTapTracer.prefab, muzzleName = targetMuzzle, hitEffectPrefab = hitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), radius = 1f, smartCollision = true, falloffModel = (FalloffModel)2, maxDistance = maxRange }.Fire(); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority) { if (((BaseSkillState)this).activatorSkillSlot.stock <= 0) { ((EntityState)this).outer.SetNextState((EntityState)new ReloadPistols()); } else { ((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 override void OnSerialize(NetworkWriter writer) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) NetworkExtensions.Write(writer, HurtBoxReference.FromHurtBox(initialOrbTarget)); } public override void OnDeserialize(NetworkReader reader) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) HurtBoxReference val = NetworkExtensions.ReadHurtBoxReference(reader); initialOrbTarget = ((HurtBoxReference)(ref val)).ResolveHurtBox(); } } internal class PRFRVWildfireStormState : BaseState { public static float baseFlameTimer = 1f; public static float baseTickFrequency = 11f; public static float tickDamage = 0.5f; public static float tickProc = 1f; public float force = 50f; private float stopwatch; public static float baseEntryTimer = 0.2f; private float entryTimer; private bool flameInitiated; private float flameStopwatch; private float tickFrequency; private float flameTimer; private static string startFlameAttackString = "Play_item_proc_fireRingTornado_start"; private static string endFlameAttackString = "Play_item_proc_fireRingTornado_end"; private ChildLocator childLocator; private Transform leftFlame; private Transform rightFlame; private Transform leftMuzzle; private Transform rightMuzzle; private Transform transformer; private Transform transformer2; private bool isCrit; private const float flameDistance = 20f; public static float recoilForce = 290f; public override void OnEnter() { ((BaseState)this).OnEnter(); stopwatch = 0f; flameInitiated = false; entryTimer = baseEntryTimer / base.attackSpeedStat; flameTimer = baseFlameTimer; tickFrequency = 3.2f * (base.attackSpeedStat - 1f) + baseTickFrequency; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(entryTimer + flameTimer + 1f); } if (Object.op_Implicit((Object)(object)modelTransform)) { childLocator = ((Component)modelTransform).GetComponent<ChildLocator>(); leftMuzzle = childLocator.FindChild("MuzzleLeft"); rightMuzzle = childLocator.FindChild("MuzzleRight"); } if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master); } } public override void OnExit() { Util.PlaySound(endFlameAttackString, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Additive", "FireFMJ", "FireFMJ.playbackRate", 0.6f); ((EntityState)this).PlayAnimation("Gesture, Override", "FireFMJ", "FireFMJ.playbackRate", 0.6f); if (Object.op_Implicit((Object)(object)leftFlame)) { EntityState.Destroy((Object)(object)((Component)leftFlame).gameObject); } if (Object.op_Implicit((Object)(object)rightFlame)) { EntityState.Destroy((Object)(object)((Component)rightFlame).gameObject); } ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; Flamethrower val = new Flamethrower(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= entryTimer && !flameInitiated) { flameInitiated = true; Util.PlaySound(startFlameAttackString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)childLocator)) { transformer = childLocator.FindChild("MuzzleLeft"); transformer2 = childLocator.FindChild("MuzzleRight"); } if (Object.op_Implicit((Object)(object)transformer)) { leftFlame = Object.Instantiate<GameObject>(val.flamethrowerEffectPrefab, transformer).transform; } if (Object.op_Implicit((Object)(object)transformer2)) { rightFlame = Object.Instantiate<GameObject>(val.flamethrowerEffectPrefab, transformer2).transform; } if (Object.op_Implicit((Object)(object)leftFlame)) { ((Component)leftFlame).GetComponent<ScaleParticleSystemDuration>().newDuration = flameTimer; } if (Object.op_Implicit((Object)(object)rightFlame)) { ((Component)rightFlame).GetComponent<ScaleParticleSystemDuration>().newDuration = flameTimer; } Flame("MuzzleCenter"); } if (flameInitiated) { flameStopwatch += Time.deltaTime; if (flameStopwatch > 1f / tickFrequency) { flameStopwatch -= 1f / tickFrequency; Flame("MuzzleCenter"); } UpdateFlame(); } if (stopwatch >= flameTimer + entryTimer && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void UpdateFlame() { //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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; Vector3 direction2 = ((Ray)(ref aimRay)).direction; if (Object.op_Implicit((Object)(object)leftFlame)) { leftFlame.forward = direction; } if (Object.op_Implicit((Object)(object)rightFlame)) { rightFlame.forward = direction2; } } private void Flame(string muzzleString) { //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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_004e: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00a7: 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_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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, damage = tickDamage * base.damageStat, force = force, muzzleName = muzzleString, hitEffectPrefab = Flamethrower.impactEffectPrefab, isCrit = isCrit, radius = Flamethrower.radius, falloffModel = (FalloffModel)0, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, procCoefficient = tickProc, maxDistance = 20f, smartCollision = true, damageType = (DamageType)(Util.CheckRoll(30f, ((EntityState)this).characterBody.master) ? 128 : 0) }.Fire(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.ApplyForce(((Ray)(ref aimRay)).direction * (0f - recoilForce), false, false); } } } 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; } } }