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 HIFUCaptainTweaks v1.2.3
HIFUCaptainTweaks.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 System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.CaptainDefenseMatrixItem; using EntityStates.CaptainSupplyDrop; using HIFUCaptainTweaks.Misc; using HarmonyLib; using IL.EntityStates.CaptainSupplyDrop; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using On.EntityStates; using On.EntityStates.Captain.Weapon; using On.EntityStates.CaptainDefenseMatrixItem; using On.EntityStates.CaptainSupplyDrop; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.Navigation; using RoR2.Projectile; 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 = ".NET Standard 2.0")] [assembly: AssemblyCompany("HIFUCaptainTweaks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HIFUCaptainTweaks")] [assembly: AssemblyTitle("HIFUCaptainTweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [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 HIFUCaptainTweaks { public class ConfigManager { internal static bool ConfigChanged; internal static bool VersionChanged; public static T HandleConfig<T>(ConfigEntryBase entry, ConfigFile config, string name) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Expected O, but got Unknown MethodInfo methodInfo = (from x in typeof(ConfigFile).GetMethods() where x.Name == "Bind" select x).First(); methodInfo = methodInfo.MakeGenericMethod(typeof(T)); object[] parameters = new object[3] { (object)new ConfigDefinition(Regex.Replace(config.ConfigFilePath, "\\W", "") + " : " + entry.Definition.Section, name), entry.DefaultValue, (object)new ConfigDescription(entry.Description.Description, (AcceptableValueBase)null, Array.Empty<object>()) }; ConfigEntryBase val = (ConfigEntryBase)methodInfo.Invoke(config, parameters); if (Main._preVersioning) { entry.BoxedValue = entry.DefaultValue; } if (!ConfigEqual(val.DefaultValue, val.BoxedValue) && VersionChanged) { entry.BoxedValue = entry.DefaultValue; val.BoxedValue = val.DefaultValue; } return default(T); } private static bool ConfigEqual(object a, object b) { if (a.Equals(b)) { return true; } if (float.TryParse(a.ToString(), out var result) && float.TryParse(b.ToString(), out var result2) && (double)Mathf.Abs(result - result2) < 0.0001) { return true; } return false; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("HIFU.HIFUCaptainTweaks", "HIFUCaptainTweaks", "1.2.2")] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.HIFUCaptainTweaks"; public const string PluginAuthor = "HIFU"; public const string PluginName = "HIFUCaptainTweaks"; public const string PluginVersion = "1.2.2"; public static AssetBundle hifucaptaintweaks; public static ConfigFile HCAPTConfig; public static ConfigFile HCAPTBackupConfig; public static ManualLogSource HCAPTLogger; public static bool _preVersioning; public static ConfigEntry<bool> enableAutoConfig { get; set; } public static ConfigEntry<string> latestVersion { get; set; } public void Awake() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown HCAPTLogger = ((BaseUnityPlugin)this).Logger; HCAPTConfig = ((BaseUnityPlugin)this).Config; hifucaptaintweaks = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("HIFUCaptainTweaks.dll", "hifucaptaintweaks")); HCAPTBackupConfig = new ConfigFile(Paths.ConfigPath + "\\HIFU.HIFUCaptainTweaks.Backup.cfg", true); HCAPTBackupConfig.Bind<string>(": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :", ": DO NOT MODIFY THIS FILES CONTENTS :"); enableAutoConfig = HCAPTConfig.Bind<bool>("Config", "Enable Auto Config Sync", true, "Disabling this would stop HIFUCaptainTweaks from syncing config whenever a new version is found."); _preVersioning = !((Dictionary<ConfigDefinition, string>)AccessTools.DeclaredPropertyGetter(typeof(ConfigFile), "OrphanedEntries").Invoke(HCAPTConfig, null)).Keys.Any((ConfigDefinition x) => x.Key == "Latest Version"); latestVersion = HCAPTConfig.Bind<string>("Config", "Latest Version", "1.2.2", "DO NOT CHANGE THIS"); if (enableAutoConfig.Value && (_preVersioning || latestVersion.Value != "1.2.2")) { latestVersion.Value = "1.2.2"; ConfigManager.VersionChanged = true; HCAPTLogger.LogInfo((object)"Config Autosync Enabled."); } IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(TweakBase)) select type; HCAPTLogger.LogInfo((object)"==+----------------==TWEAKS==----------------+=="); foreach (Type item in enumerable) { TweakBase tweakBase = (TweakBase)Activator.CreateInstance(item); if (ValidateTweak(tweakBase)) { tweakBase.Init(); } } IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(MiscBase)) select type; HCAPTLogger.LogInfo((object)"==+----------------==MISC==----------------+=="); foreach (Type item2 in enumerable2) { MiscBase miscBase = (MiscBase)Activator.CreateInstance(item2); if (ValidateMisc(miscBase)) { miscBase.Init(); } } OrbitalsInHiddenRealms.HopooLore(); TryRespawn.HopooBugs(); } public bool ValidateTweak(TweakBase tb) { if (tb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(tb.Name, "Enable?", true, "Vanilla is false").Value) { return true; } return false; } public bool ValidateMisc(MiscBase mb) { if (mb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(mb.Name, "Enable?", true, "Vanilla is false").Value) { return true; } return false; } private void PeripheryMyBeloved() { } } public abstract class MiscBase { public abstract string Name { get; } public virtual bool isEnabled { get; } = true; public T ConfigOption<T>(T value, string name, string description) { ConfigEntry<T> val = Main.HCAPTConfig.Bind<T>(Name, name, value, description); ConfigManager.HandleConfig<T>((ConfigEntryBase)(object)val, Main.HCAPTBackupConfig, name); return val.Value; } public abstract void Hooks(); public string d(float f) { return f * 100f + "%"; } public virtual void Init() { Hooks(); Main.HCAPTLogger.LogInfo((object)("Added " + Name)); } } public abstract class MiscBase<T> : MiscBase where T : MiscBase<T> { public static T instance { get; set; } public MiscBase() { if (instance != null) { throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice"); } instance = this as T; } } public abstract class TweakBase { public abstract string Name { get; } public abstract string SkillToken { get; } public abstract string DescText { get; } public virtual bool isEnabled { get; } = true; public T ConfigOption<T>(T value, string name, string description) { ConfigEntry<T> val = Main.HCAPTConfig.Bind<T>(Name, name, value, description); ConfigManager.HandleConfig<T>((ConfigEntryBase)(object)val, Main.HCAPTBackupConfig, name); return val.Value; } public abstract void Hooks(); public string d(float f) { return f * 100f + "%"; } public virtual void Init() { Hooks(); string text = "CAPTAIN_" + SkillToken.ToUpper() + "_DESCRIPTION"; LanguageAPI.Add(text, DescText); Main.HCAPTLogger.LogInfo((object)("Added " + Name)); } } public abstract class TweakBase<T> : TweakBase where T : TweakBase<T> { public static T instance { get; set; } public TweakBase() { if (instance != null) { throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice"); } instance = this as T; } } } namespace HIFUCaptainTweaks.Skills { public class HackingBeacon : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__12_0; public static hook_OnEnter <>9__12_1; internal void <Changes>b__12_0(orig_OnEnter orig, HackingMainState self) { HackingMainState.baseRadius = Radius; orig.Invoke(self); } internal void <Changes>b__12_1(orig_OnEnter orig, HackingInProgressState self) { HackingInProgressState.baseGoldForBaseDuration = DurationPerGold; HackingInProgressState.baseDuration = BaseDuration; orig.Invoke(self); } } public static float Radius; public static float BaseDuration; public static int DurationPerGold; public static bool Formula; public override string Name => ": Special :::: Hacking Beacon"; public override string SkillToken => "supply_hacking"; public override string DescText => "<style=cIsUtility>Hack</style> all nearby purchasables to a cost of <style=cIsUtility>$0</style> over time."; public override void Init() { Radius = ConfigOption(16f, "Radius", "Vanilla is 10"); BaseDuration = ConfigOption(2f, "Duration Multiplier", "Vanilla is 3"); DurationPerGold = ConfigOption(25, "Duration Per Gold", "Vanilla is 25"); Formula = ConfigOption(value: true, "Hacking Speed Formula", "(Interactable Cost / Duration Per Gold) * Duration Multiplier"); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //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_005d: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Expected O, but got Unknown LanguageAPI.Add("CAPTAIN_SUPPLY_HACKING_NAME", "Hacking Beacon"); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainSupplyDrop, Hacking.prefab").WaitForCompletion(); Transform child = val.GetComponent<ModelLocator>().modelTransform.GetChild(4); ((Component)child).GetComponent<ObjectScaleCurve>().baseScale = new Vector3(Radius / 1.5f, Radius / 1.5f, Radius / 1.5f); object obj = <>c.<>9__12_0; if (obj == null) { hook_OnEnter val2 = delegate(orig_OnEnter orig, HackingMainState self) { HackingMainState.baseRadius = Radius; orig.Invoke(self); }; <>c.<>9__12_0 = val2; obj = (object)val2; } HackingMainState.OnEnter += (hook_OnEnter)obj; object obj2 = <>c.<>9__12_1; if (obj2 == null) { hook_OnEnter val3 = delegate(orig_OnEnter orig, HackingInProgressState self) { HackingInProgressState.baseGoldForBaseDuration = DurationPerGold; HackingInProgressState.baseDuration = BaseDuration; orig.Invoke(self); }; <>c.<>9__12_1 = val3; obj2 = (object)val3; } HackingInProgressState.OnEnter += (hook_OnEnter)obj2; } } public class HealingBeacon : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__14_0; internal void <Changes>b__14_0(orig_OnEnter orig, HealZoneMainState self) { HealingWard component = HealZoneMainState.healZonePrefab.GetComponent<HealingWard>(); component.radius = Radius; component.healFraction = Interval * Healing; orig.Invoke(self); } } public static float Healing; public static float Radius; public static float Interval; public static float MoveSpeed; public static BuffDef MoveSpeedBuff; public override string Name => ": Special : Remedy Beacon"; public override string SkillToken => "supply_heal"; public override string DescText => "<style=cIsHealing>Heal</style> all nearby allies constantly" + ((MoveSpeed > 0f) ? " and <style=cIsUtility>increase movement speed</style>." : "."); public override void Init() { Healing = ConfigOption(0.07f, "Healing", "Decimal. Vanilla is 0.1"); Interval = ConfigOption(0.2f, "Interval", "Vanilla is 0.2"); Radius = ConfigOption(24f, "Radius", "Vanilla is 10"); MoveSpeed = ConfigOption(0.2f, "Buff Move Speed", "Decimal. Vanilla is 0"); base.Init(); } public override void Hooks() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown Changes(); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.HasBuff(MoveSpeedBuff)) { args.moveSpeedMultAdd += MoveSpeed; } } public static void Changes() { //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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_00ee: 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_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: 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_00d8: 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_00e3: Expected O, but got Unknown LanguageAPI.Add("CAPTAIN_SUPPLY_HEAL_NAME", "Remedy Beacon"); Texture2D val = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texMovespeedBuffIcon.tif").WaitForCompletion(); MoveSpeedBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)MoveSpeedBuff).name = "Remedy Beacon Speed"; MoveSpeedBuff.buffColor = Color32.op_Implicit(new Color32((byte)128, (byte)209, (byte)132, byte.MaxValue)); MoveSpeedBuff.canStack = false; MoveSpeedBuff.iconSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f)); MoveSpeedBuff.isDebuff = false; ContentAddition.AddBuffDef(MoveSpeedBuff); object obj = <>c.<>9__14_0; if (obj == null) { hook_OnEnter val2 = delegate(orig_OnEnter orig, HealZoneMainState self) { HealingWard component2 = HealZoneMainState.healZonePrefab.GetComponent<HealingWard>(); component2.radius = Radius; component2.healFraction = Interval * Healing; orig.Invoke(self); }; <>c.<>9__14_0 = val2; obj = (object)val2; } HealZoneMainState.OnEnter += (hook_OnEnter)obj; GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainSupplyDrop, Healing.prefab").WaitForCompletion(); Transform child = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainHealingWard.prefab").WaitForCompletion().transform.GetChild(0); val3.AddComponent<BuffWard>(); BuffWard component = val3.GetComponent<BuffWard>(); component.Networkradius = Radius; component.shape = (BuffWardShape)0; component.radius = Radius; component.interval = 0.5f; component.rangeIndicator = ((Component)child).transform; component.buffDef = MoveSpeedBuff; component.buffDuration = 1.5f; component.floorWard = true; component.expires = false; component.invertTeamFilter = false; component.expireDuration = 0f; component.animateRadius = false; component.removalTime = 0f; component.requireGrounded = false; component.teamFilter = val3.GetComponent<TeamFilter>(); } } public class OGM72DIABLOStrike : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__14_0; public static hook_ModifyProjectile <>9__14_1; internal void <Changes>b__14_0(orig_OnEnter orig, CallAirstrikeBase self) { //IL_0049: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) if (self is CallAirstrikeAlt) { ((AimThrowableBase)self).damageCoefficient = Damage; ((AimThrowableBase)self).projectilePrefab.transform.localScale = new Vector3(Radius / 16f, Radius / 16f, Radius / 16f); ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).blastRadius = Radius; ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).falloffModel = (FalloffModel)0; ((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(Radius / 16f, Radius / 16f, Radius / 16f); Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).blastRadius = EmpoweredRadius; ((AimThrowableBase)self).projectilePrefab.transform.localScale = new Vector3(EmpoweredRadius / 16f, EmpoweredRadius / 16f, EmpoweredRadius / 16f); ((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(EmpoweredRadius / 16f, EmpoweredRadius / 16f, EmpoweredRadius / 16f); } } orig.Invoke(self); } internal void <Changes>b__14_1(orig_ModifyProjectile orig, AimThrowableBase self, ref FireProjectileInfo fireProjectileInfo) { orig.Invoke(self, ref fireProjectileInfo); if (self is CallAirstrikeAlt) { fireProjectileInfo.useFuseOverride = true; ((FireProjectileInfo)(ref fireProjectileInfo)).fuseOverride = TimeToLand; } } } public static float Damage; public static float Radius; public static float Cooldown; public static float TimeToLand; public static float EmpoweredRadius; public static SkillDef Diablo; public override string Name => ": Utility :: OGM-72 DIABLO Strike"; public override string SkillToken => "utility_alt1"; public override string DescText => "<style=cIsDamage>Stunning</style>. Request a <style=cIsDamage>kinetic strike</style> from the <style=cIsDamage>UES Safe Travels</style>. After <style=cIsUtility>" + TimeToLand + " seconds</style>, it deals <style=cIsDamage>" + d(Damage) + " damage</style> to ALL characters."; public override void Init() { Damage = ConfigOption(140f, "Damage", "Decimal. Vanilla is 400"); Radius = ConfigOption(16f, "Radius", "Vanilla is 16"); Cooldown = ConfigOption(24f, "Cooldown", "Vanilla is 40"); TimeToLand = ConfigOption(15f, "Explosion Timer", "Vanilla is 20"); EmpoweredRadius = ConfigOption(32f, "Empowered Radius", "Vanilla is 16"); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //IL_0015: 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_0020: Expected O, but got Unknown //IL_0050: 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_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_0045: Expected O, but got Unknown object obj = <>c.<>9__14_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, CallAirstrikeBase self) { //IL_0049: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) if (self is CallAirstrikeAlt) { ((AimThrowableBase)self).damageCoefficient = Damage; ((AimThrowableBase)self).projectilePrefab.transform.localScale = new Vector3(Radius / 16f, Radius / 16f, Radius / 16f); ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).blastRadius = Radius; ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).falloffModel = (FalloffModel)0; ((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(Radius / 16f, Radius / 16f, Radius / 16f); Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { ((ProjectileExplosion)((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileImpactExplosion>()).blastRadius = EmpoweredRadius; ((AimThrowableBase)self).projectilePrefab.transform.localScale = new Vector3(EmpoweredRadius / 16f, EmpoweredRadius / 16f, EmpoweredRadius / 16f); ((AimThrowableBase)self).projectilePrefab.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(EmpoweredRadius / 16f, EmpoweredRadius / 16f, EmpoweredRadius / 16f); } } orig.Invoke(self); }; <>c.<>9__14_0 = val; obj = (object)val; } CallAirstrikeBase.OnEnter += (hook_OnEnter)obj; object obj2 = <>c.<>9__14_1; if (obj2 == null) { hook_ModifyProjectile val2 = delegate(orig_ModifyProjectile orig, AimThrowableBase self, ref FireProjectileInfo fireProjectileInfo) { orig.Invoke(self, ref fireProjectileInfo); if (self is CallAirstrikeAlt) { fireProjectileInfo.useFuseOverride = true; ((FireProjectileInfo)(ref fireProjectileInfo)).fuseOverride = TimeToLand; } }; <>c.<>9__14_1 = val2; obj2 = (object)val2; } AimThrowableBase.ModifyProjectile += (hook_ModifyProjectile)obj2; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepAirstrikeAlt.asset").WaitForCompletion().baseRechargeInterval = Cooldown; } } public class OrbitalProbe : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__11_0; internal void <Changes>b__11_0(orig_OnEnter orig, AimThrowableBase self) { if (self is CallAirstrike1 || self is CallAirstrike2 || self is CallAirstrike3) { self.damageCoefficient = Damage; Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { self.damageCoefficient = EmpoweredDamage; } } orig.Invoke(self); } } public static float Damage; public static float Cooldown; public static float EmpoweredDamage; public override string Name => ": Utility : Orbital Probe"; public override string SkillToken => "utility"; public override string DescText => "<style=cIsDamage>Stunning</style>. Request up to <style=cIsDamage>3</style> Orbital Probes from the <style=cIsDamage>UES Safe Travels</style>. Each probe deals <style=cIsDamage>" + d(Damage) + " damage</style>."; public override void Init() { Damage = ConfigOption(10f, "Damage", "Decimal. Vanilla is 10"); Cooldown = ConfigOption(9f, "Cooldown", "Vanilla is 11"); EmpoweredDamage = ConfigOption(14f, "Empowered Damage", "Decimal. Vanilla is 10"); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //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_0015: 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_0020: Expected O, but got Unknown object obj = <>c.<>9__11_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, AimThrowableBase self) { if (self is CallAirstrike1 || self is CallAirstrike2 || self is CallAirstrike3) { self.damageCoefficient = Damage; Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { self.damageCoefficient = EmpoweredDamage; } } orig.Invoke(self); }; <>c.<>9__11_0 = val; obj = (object)val; } AimThrowableBase.OnEnter += (hook_OnEnter)obj; SkillDef val2 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepAirstrike.asset").WaitForCompletion(); val2.baseRechargeInterval = Cooldown; } } public class PowerTazer : TweakBase { public static float Damage; public static float Cooldown; public static int Charges; public static int ChargesToRecharges; public static float AoE; public static float EmpowerDuration; public static float Size; public static SkillDef CaptainShotgun; public static SkillDef PrepAirstrike; public static SkillDef PrepAirstrikeAlt; public override string Name => ": Secondary : Thunder Tazer"; public override string SkillToken => "secondary"; public override string DescText => "<style=cIsUtility>Empowering</style>. <style=cIsDamage>Shocking</style>. Fire a fast tazer that deals <style=cIsDamage>" + d(Damage) + " damage</style> and <style=cIsUtility>empowers</style> your other abilities."; public override void Init() { //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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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) Damage = ConfigOption(3.8f, "Damage", "Decimal. Vanilla is 1"); Cooldown = ConfigOption(7f, "Cooldown", "Vanilla is 6"); Charges = ConfigOption(1, "Charges", "Vanilla is 1"); ChargesToRecharges = ConfigOption(1, "Charges to Recharge", "Vanilla is 1"); AoE = ConfigOption(8f, "Area of Effect", "Vanilla is 2"); EmpowerDuration = ConfigOption(1.5f, "Empower Duration", "Default is 1.5"); Size = ConfigOption(2f, "Size Multiplier", "Vanilla is 1"); CaptainShotgun = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CaptainShotgun.asset").WaitForCompletion(); PrepAirstrike = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepAirstrike.asset").WaitForCompletion(); PrepAirstrikeAlt = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepAirstrikeAlt.asset").WaitForCompletion(); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Expected O, but got Unknown //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_037a: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03be: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_03de: Expected O, but got Unknown LanguageAPI.Add("KEYWORD_EMPOWERING", "<style=cKeywordName>Empowering</style><style=cSub>Makes your abilities stronger in unique ways.\nVulcan Shotgun: <style=cIsDamage>+75% Attack Speed</style>.\nOrbital Probe: <style=cIsDamage>+400% Damage</style>.\nOGM-72 'DIABLO' Strike: <style=cIsDamage>+100% Radius</style>.</style>"); string[] keywordTokens = new string[2] { "KEYWORD_EMPOWERING", "KEYWORD_SHOCKING" }; SkillFamily val = Addressables.LoadAssetAsync<SkillFamily>((object)"RoR2/Base/Captain/CaptainSecondarySkillFamily.asset").WaitForCompletion(); val.variants[0].skillDef.keywordTokens = keywordTokens; LanguageAPI.Add("CAPTAIN_SECONDARY_NAME", "Thunder Tazer"); Texture2D val2 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ShockNearby/texBuffTeslaIcon.tif").WaitForCompletion(); BuffDef Empowered = ScriptableObject.CreateInstance<BuffDef>(); ((Object)Empowered).name = "Empowered"; Empowered.buffColor = Color32.op_Implicit(new Color32((byte)41, (byte)99, (byte)181, byte.MaxValue)); Empowered.canStack = false; Empowered.iconSprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0f, 0f)); Empowered.isDebuff = false; ContentAddition.AddBuffDef(Empowered); FireTazer.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, FireTazer self) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) FireTazer.baseDuration = 1f; FireTazer.baseDurationUntilPriorityLowers = 0.3f; FireTazer.damageCoefficient = Damage; FireTazer.force = 500f; if ((Object)(object)((EntityState)self).gameObject.GetComponent<Empower>() == (Object)null) { ((EntityState)self).gameObject.AddComponent<Empower>(); } ((EntityState)self).gameObject.GetComponent<Empower>().IsEmpowered = true; ((EntityState)self).gameObject.GetComponent<Empower>().EmpowerDuration = EmpowerDuration; ((EntityState)self).characterBody.AddTimedBuffAuthority(Empowered.buffIndex, EmpowerDuration); orig.Invoke(self); }; SkillDef val3 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CaptainTazer.asset").WaitForCompletion(); val3.baseRechargeInterval = Cooldown; val3.baseMaxStock = Charges; val3.rechargeStock = ChargesToRecharges; GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainTazer.prefab").WaitForCompletion(); val4.GetComponent<ProjectileSimple>().lifetime = 6f; val4.transform.localScale = new Vector3(Size, Size, Size); val4.GetComponent<ProjectileController>().ghostPrefab.transform.localScale = new Vector3(Size, Size, Size); ProjectileImpactExplosion component = val4.GetComponent<ProjectileImpactExplosion>(); component.lifetimeAfterImpact = 5f; component.lifetime = 6f; ((ProjectileExplosion)component).blastRadius = AoE; Texture2D val5 = Main.hifucaptaintweaks.LoadAsset<Texture2D>("texCaptainIcons.png"); Texture2D val6 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Captain/texCaptainSkillIcons.png").WaitForCompletion(); Sprite RealVulcan = Sprite.Create(val6, new Rect(128f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite RealEmpoweredVulcan = Sprite.Create(val5, new Rect(128f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite RealProbe = Sprite.Create(val6, new Rect(256f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite RealEmpoweredProbe = Sprite.Create(val5, new Rect(256f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite val7 = Sprite.Create(val6, new Rect(384f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite val8 = Sprite.Create(val5, new Rect(384f, 384f, 128f, 128f), new Vector2(0f, 0f)); Sprite RealDiablo = Sprite.Create(val6, new Rect(384f, 0f, 128f, 128f), new Vector2(0f, 0f)); Sprite RealEmpoweredDiablo = Sprite.Create(val5, new Rect(384f, 0f, 128f, 128f), new Vector2(0f, 0f)); CharacterBody.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, CharacterBody self) { Empower component2 = ((Component)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component2 != (Object)null && component2.IsEmpowered) { component2.EmpowerDuration -= Time.fixedDeltaTime; if ((Object)(object)self.skillLocator.primary.skillDef == (Object)(object)CaptainShotgun) { self.skillLocator.primary.skillDef.icon = RealEmpoweredVulcan; } if ((Object)(object)self.skillLocator.utility.skillDef == (Object)(object)PrepAirstrike) { self.skillLocator.utility.skillDef.icon = RealEmpoweredProbe; } if ((Object)(object)self.skillLocator.utility.skillDef == (Object)(object)PrepAirstrikeAlt) { self.skillLocator.utility.skillDef.icon = RealEmpoweredDiablo; } if (component2.EmpowerDuration <= 0f) { if ((Object)(object)self.skillLocator.primary.skillDef == (Object)(object)CaptainShotgun) { self.skillLocator.primary.skillDef.icon = RealVulcan; } if ((Object)(object)self.skillLocator.utility.skillDef == (Object)(object)PrepAirstrike) { self.skillLocator.utility.skillDef.icon = RealProbe; } if ((Object)(object)self.skillLocator.utility.skillDef == (Object)(object)PrepAirstrikeAlt) { self.skillLocator.utility.skillDef.icon = RealDiablo; } component2.IsEmpowered = false; } } orig.Invoke(self); }; } } public class Empower : MonoBehaviour { public bool IsEmpowered; public float EmpowerDuration; } public class ResupplyBeacon : TweakBase { public static float AttackSpeed; public static float CooldownReduction; public static float Radius; public static BuffDef AttackSpeedBuff; public override string Name => ": Special ::: Artillery Beacon"; public override string SkillToken => "supply_equipment_restock"; public override string DescText => "<style=cIsUtility>Recharge Equipment</style> on use" + ((AttackSpeed > 0f) ? ", <style=cIsDamage>increase attack speed</style> and <style=cIsUtility>reduce cooldowns</style>." : "."); public override void Init() { AttackSpeed = ConfigOption(0.25f, "Buff Attack Speed", "Decimal. Vanilla is 0"); CooldownReduction = ConfigOption(0.1f, "Buff Cooldown Reduction", "Decimal. Vanilla is 0"); Radius = ConfigOption(20f, "Radius", "Vanilla is 0"); base.Init(); } public override void Hooks() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown Changes(); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.HasBuff(AttackSpeedBuff)) { args.attackSpeedMultAdd += AttackSpeed; args.cooldownMultAdd -= CooldownReduction; } } public static void Changes() { //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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Expected O, but got Unknown LanguageAPI.Add("CAPTAIN_SUPPLY_EQUIPMENT_RESTOCK_NAME", "Artillery Beacon"); Texture2D val = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/WarCryOnMultiKill/texWarcryBuffIcon.tif").WaitForCompletion(); AttackSpeedBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)AttackSpeedBuff).name = "Artillery Beacon Attack Speed"; AttackSpeedBuff.buffColor = Color32.op_Implicit(new Color32((byte)205, (byte)133, (byte)49, byte.MaxValue)); AttackSpeedBuff.canStack = false; AttackSpeedBuff.iconSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f)); AttackSpeedBuff.isDebuff = false; ContentAddition.AddBuffDef(AttackSpeedBuff); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainSupplyDrop, EquipmentRestock.prefab").WaitForCompletion(); Transform child = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainHealingWard.prefab").WaitForCompletion().transform.GetChild(0); val2.AddComponent<BuffWard>(); BuffWard component = val2.GetComponent<BuffWard>(); component.Networkradius = Radius; component.shape = (BuffWardShape)0; component.radius = Radius; component.rangeIndicator = ((Component)child).transform; component.buffDef = AttackSpeedBuff; component.buffDuration = 1.5f; component.interval = 0.5f; component.floorWard = true; component.expires = false; component.invertTeamFilter = false; component.expireDuration = 0f; component.animateRadius = false; component.requireGrounded = false; component.teamFilter = val2.GetComponent<TeamFilter>(); GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/WardOnLevel/WarbannerWard.prefab").WaitForCompletion(); Transform WarbannerVisual1 = val3.transform.GetChild(0); Transform WarbannerVisual2 = val3.transform.GetChild(0).GetChild(0); BaseCaptainSupplyDropState.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, BaseCaptainSupplyDropState self) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) try { GameObject val4 = GameObject.Find("CaptainSupplyDrop, EquipmentRestock(Clone)"); if ((Object)(object)val4 != (Object)null) { Object.Instantiate<Transform>(WarbannerVisual1, val4.transform); ((Component)WarbannerVisual1).transform.localScale = new Vector3(Radius, Radius, Radius); Object.Instantiate<Transform>(WarbannerVisual2, val4.transform); } } catch { Main.HCAPTLogger.LogError((object)"GUHHHHHH IM MORBIN... 3... 2... 1.."); } orig.Invoke(self); }; } } public class ShockingBeacon : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__16_1; public static Func<float, ShockZoneMainState, float> <>9__16_0; public static Func<Instruction, bool> <>9__18_0; public static hook_OnEnter <>9__19_0; internal bool <ShockZoneMainState_Shock1>b__16_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0f); } internal float <ShockZoneMainState_Shock1>b__16_0(float Damage, ShockZoneMainState self) { CharacterMaster ownerMaster = ((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster; float num = ownerMaster.GetBody().damage * BigDamage; return Damage + num; } internal bool <ShockZoneMainState_Shock>b__18_0(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 16779264); } internal void <Changes>b__19_0(orig_OnEnter orig, ShockZoneMainState self) { ShockZoneMainState.shockFrequency = BigFireRate; ShockZoneMainState.shockRadius = BigRadius; orig.Invoke(self); } } public static float BigDamage; public static float BigFireRate; public static float BigRadius; public static float SmolDamage; public static float SmolFireRate; public static float SmolRadius; public static float SmolProcCoefficient; public static int StunType; public float timer = 69696970f; public override string Name => ": Special :: Thunder Beacon"; public override string SkillToken => "supply_shocking"; public override string DescText => "Periodically <style=cIsDamage>stun</style>" + ((BigDamage > 0f || SmolDamage > 0f) ? " and <style=cIsDamage>damage</style>" : "") + " all nearby enemies, immobilizing them."; public override void Init() { BigDamage = ConfigOption(5f, "Burst Damage", "Decimal. Vanilla is 0"); BigFireRate = ConfigOption(0.25f, "Burst Fire Rate", "Vanilla is 0.33334"); BigRadius = ConfigOption(24f, "Burst Radius", "Vanilla is 10"); SmolDamage = ConfigOption(1f, "Constant Damage", "Decimal. Vanilla is 0"); SmolFireRate = ConfigOption(1f, "Constant Fire Rate", "Vanilla is 0"); SmolRadius = ConfigOption(24f, "Constant Radius", "Vanilla is 0"); SmolProcCoefficient = ConfigOption(0f, "Constant Proc Coefficient", "Vanilla is 0"); StunType = ConfigOption(2, "Stun Type", "0 = None, 1 = Shock for 5s, 2 = Stun for 1s, Vanilla is 1"); base.Init(); } public override void Hooks() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown Changes(); ShockZoneMainState.Shock += new Manipulator(ShockZoneMainState_Shock); ShockZoneMainState.Shock += new Manipulator(ShockZoneMainState_Shock1); } private void ShockZoneMainState_Shock1(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0f) })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, ShockZoneMainState, float>>((Func<float, ShockZoneMainState, float>)delegate(float Damage, ShockZoneMainState self) { CharacterMaster ownerMaster = ((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster; float num = ownerMaster.GetBody().damage * BigDamage; return Damage + num; }); } else { Main.HCAPTLogger.LogError((object)"Failed changing damage for Thunder Beacon."); } } private void ShockZoneMainState_Shock(ILContext il) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown timer += Time.fixedDeltaTime; float num = 69696970f; ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 16779264) })) { Instruction next = val.Next; int stunType = StunType; if (1 == 0) { } int num2 = stunType switch { 0 => 2048, 2 => 2080, _ => 16779264, }; if (1 == 0) { } next.Operand = num2; } else if (timer > num) { Main.HCAPTLogger.LogError((object)"Failed changing damage type for Thunder Beacon."); timer = 0f; } } public static void Changes() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //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_0036: Expected O, but got Unknown LanguageAPI.Add("CAPTAIN_SUPPLY_SHOCKING_NAME", "Thunder Beacon"); object obj = <>c.<>9__19_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, ShockZoneMainState self) { ShockZoneMainState.shockFrequency = BigFireRate; ShockZoneMainState.shockRadius = BigRadius; orig.Invoke(self); }; <>c.<>9__19_0 = val; obj = (object)val; } ShockZoneMainState.OnEnter += (hook_OnEnter)obj; float timer = 0f; ShockZoneMainState.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, ShockZoneMainState self) { //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016b: 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_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown timer += Time.fixedDeltaTime; if (timer > 1f / SmolFireRate && self != null && (Object)(object)((EntityState)self).gameObject != (Object)null && (Object)(object)((EntityState)self).gameObject.GetComponent<Deployable>() != (Object)null && (Object)(object)((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster != (Object)null && (Object)(object)((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster.GetBodyObject() != (Object)null && (Object)(object)((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster.GetBody() != (Object)null) { CharacterMaster ownerMaster = ((EntityState)self).gameObject.GetComponent<Deployable>().ownerMaster; new BlastAttack { attacker = ownerMaster.GetBodyObject(), baseDamage = ownerMaster.GetBody().damage * SmolDamage, baseForce = 0f, crit = ownerMaster.GetBody().RollCrit(), damageType = (DamageType)0, procCoefficient = SmolProcCoefficient, radius = SmolRadius, falloffModel = (FalloffModel)0, position = ((EntityState)self).transform.position, attackerFiltering = (AttackerFiltering)2, teamIndex = ownerMaster.GetBody().teamComponent.teamIndex }.Fire(); EffectManager.SpawnEffect(ShockZoneMainState.shockEffectPrefab, new EffectData { origin = ((EntityState)self).transform.position, scale = SmolRadius, color = new Color32((byte)121, (byte)184, byte.MaxValue, (byte)50) }, true); timer = 0f; } orig.Invoke(self); }; } } public class VulcanShotgun : TweakBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__18_0; public static hook_FixedUpdate <>9__18_1; public static hook_OnEnter <>9__18_2; public static hook_ModifyBullet <>9__18_3; internal void <Changes>b__18_0(orig_OnEnter orig, ChargeCaptainShotgun self) { ChargeCaptainShotgun.baseChargeDuration = ChargeDuration; ChargeCaptainShotgun.baseMinChargeDuration = 0f; orig.Invoke(self); } internal void <Changes>b__18_1(orig_FixedUpdate orig, ChargeCaptainShotgun self) { if (Util.HasEffectiveAuthority(((EntityState)self).outer.networkIdentity) && ((EntityState)self).fixedAge / self.chargeDuration > 1f && !((Component)((EntityState)self).outer).gameObject.GetComponent<CharacterBody>().isSprinting) { self.released = true; } orig.Invoke(self); } internal void <Changes>b__18_2(orig_OnEnter orig, GenericBulletBaseState self) { if (self is FireCaptainShotgun) { self.bulletCount = PelletCount; self.damageCoefficient = Damage; self.procCoefficient = ProcCoefficient; self.baseDuration = 1f / FireRate; self.spreadPitchScale = 0.8f; self.spreadYawScale = 0.8f; self.force = 350f; Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { self.baseDuration = 1f / EmpoweredFireRate; } } orig.Invoke(self); } internal void <Changes>b__18_3(orig_ModifyBullet orig, FireCaptainShotgun self, BulletAttack bulletAttack) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, bulletAttack); bulletAttack.falloffModel = (FalloffModel)0; } } public static float Damage; public static float ProcCoefficient; public static float FireRate; public static int PelletCount; public static int Charges; public static int ChargesToRecharge; public static float Cooldown; public static float EmpoweredFireRate; public static float ChargeDuration; public static float EmpoweredCooldown; public override string Name => ": Primary : Vulcan Shotgun"; public override string SkillToken => "primary"; public override string DescText => "Fire a blast of pellets that deal <style=cIsDamage>" + PelletCount + "x" + d(Damage) + " damage</style>. Charging the attack narrows the <style=cIsUtility>spread</style>."; public override void Init() { Damage = ConfigOption(0.75f, "Damage", "Decimal. Vanilla is 1.2"); ProcCoefficient = ConfigOption(0.55f, "Proc Coefficient", "Vanilla is 0.75"); FireRate = ConfigOption(3f, "Fire Rate", "Vanilla is 1"); PelletCount = ConfigOption(6, "Pellet Count", "Vanilla is 8"); Charges = ConfigOption(3, "Charges", "Vanilla is 0"); ChargesToRecharge = ConfigOption(3, "Charges to Recharge", "Vanilla is 0"); Cooldown = ConfigOption(1f, "Cooldown", "Vanilla is 0"); EmpoweredFireRate = ConfigOption(5.25f, "Empowered Fire Rate", "Vanilla is 1"); ChargeDuration = ConfigOption(0.4f, "Charging Duration", "Vanilla is 1.2"); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //IL_0015: 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_0020: Expected O, but got Unknown //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_0045: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown //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_0084: 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_008f: Expected O, but got Unknown object obj = <>c.<>9__18_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, ChargeCaptainShotgun self) { ChargeCaptainShotgun.baseChargeDuration = ChargeDuration; ChargeCaptainShotgun.baseMinChargeDuration = 0f; orig.Invoke(self); }; <>c.<>9__18_0 = val; obj = (object)val; } ChargeCaptainShotgun.OnEnter += (hook_OnEnter)obj; object obj2 = <>c.<>9__18_1; if (obj2 == null) { hook_FixedUpdate val2 = delegate(orig_FixedUpdate orig, ChargeCaptainShotgun self) { if (Util.HasEffectiveAuthority(((EntityState)self).outer.networkIdentity) && ((EntityState)self).fixedAge / self.chargeDuration > 1f && !((Component)((EntityState)self).outer).gameObject.GetComponent<CharacterBody>().isSprinting) { self.released = true; } orig.Invoke(self); }; <>c.<>9__18_1 = val2; obj2 = (object)val2; } ChargeCaptainShotgun.FixedUpdate += (hook_FixedUpdate)obj2; object obj3 = <>c.<>9__18_2; if (obj3 == null) { hook_OnEnter val3 = delegate(orig_OnEnter orig, GenericBulletBaseState self) { if (self is FireCaptainShotgun) { self.bulletCount = PelletCount; self.damageCoefficient = Damage; self.procCoefficient = ProcCoefficient; self.baseDuration = 1f / FireRate; self.spreadPitchScale = 0.8f; self.spreadYawScale = 0.8f; self.force = 350f; Empower component = ((EntityState)self).gameObject.GetComponent<Empower>(); if ((Object)(object)component != (Object)null && component.IsEmpowered) { self.baseDuration = 1f / EmpoweredFireRate; } } orig.Invoke(self); }; <>c.<>9__18_2 = val3; obj3 = (object)val3; } GenericBulletBaseState.OnEnter += (hook_OnEnter)obj3; object obj4 = <>c.<>9__18_3; if (obj4 == null) { hook_ModifyBullet val4 = delegate(orig_ModifyBullet orig, FireCaptainShotgun self, BulletAttack bulletAttack) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, bulletAttack); bulletAttack.falloffModel = (FalloffModel)0; }; <>c.<>9__18_3 = val4; obj4 = (object)val4; } FireCaptainShotgun.ModifyBullet += (hook_ModifyBullet)obj4; SkillDef val5 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CaptainShotgun.asset").WaitForCompletion(); val5.baseMaxStock = Charges; val5.rechargeStock = ChargesToRecharge; val5.baseRechargeInterval = Cooldown; val5.mustKeyPress = false; val5.resetCooldownTimerOnUse = true; } } } namespace HIFUCaptainTweaks.Misc { public class AllBeacons : MiscBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__5_0; internal void <Changes>b__5_0(orig_OnEnter orig, CallSupplyDropBase self) { CallSupplyDropBase.impactDamageCoefficient = Damage; orig.Invoke(self); } } public static float Damage; public override string Name => ": Special ::::: All Beacons"; public override void Init() { Damage = ConfigOption(13f, "Damage", "Decimal. Vanilla is 20"); base.Init(); } public override void Hooks() { Changes(); } public static void Changes() { //IL_0015: 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_0020: Expected O, but got Unknown object obj = <>c.<>9__5_0; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter orig, CallSupplyDropBase self) { CallSupplyDropBase.impactDamageCoefficient = Damage; orig.Invoke(self); }; <>c.<>9__5_0 = val; obj = (object)val; } CallSupplyDropBase.OnEnter += (hook_OnEnter)obj; } } public class BaseStats : MiscBase { public static float MovementSpeed; public override string Name => ": Misc :: Base Stats"; public override void Init() { MovementSpeed = ConfigOption(7.5f, "Base Move Speed", "Vanilla is 7"); base.Init(); } public override void Hooks() { Changes(); } private void Changes() { //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) CharacterBody component = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainBody.prefab").WaitForCompletion().GetComponent<CharacterBody>(); component.baseMoveSpeed = MovementSpeed; } } public class DefensiveMicrobots : MiscBase { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__13_0; public static hook_DeleteNearbyProjectile <>9__13_1; internal void <Changes>b__13_0(orig_OnEnter orig, DefenseMatrixOn self) { DefenseMatrixOn.baseRechargeFrequency = BaseRechargeFrequency; DefenseMatrixOn.minimumFireFrequency = MinimumFireFrequency; DefenseMatrixOn.projectileEraserRadius = Radius; orig.Invoke(self); } internal bool <Changes>b__13_1(orig_DeleteNearbyProjectile orig, DefenseMatrixOn self) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) bool flag = orig.Invoke(self); if ((Object)(object)((BaseBodyAttachmentState)self).attachedBody != (Object)null && (Object)(object)((Component)((BaseBodyAttachmentState)self).attachedBody).GetComponent<CharacterBody>() != (Object)null && flag) { ((Component)((BaseBodyAttachmentState)self).attachedBody).GetComponent<CharacterBody>().AddTimedBuffAuthority(MoveSpeedBuff.buffIndex, SpeedBuffDuration); } return flag; } } public static float Radius; public static float MinimumFireFrequency; public static float BaseRechargeFrequency; public static bool Formula; public static float SpeedBuff; public static bool StackSpeedBuff; public static float SpeedBuffDuration; public static BuffDef MoveSpeedBuff; public override string Name => ":: Misc : Defensive Microbots"; public override void Init() { Radius = ConfigOption(20f, "Range", "Vanilla is 20"); MinimumFireFrequency = ConfigOption(1.3f, "Maximum Blocks Per Second", "Vanilla is 10"); BaseRechargeFrequency = ConfigOption(0.8f, "Blocks Per Second", "Vanilla is 2"); Formula = ConfigOption(value: true, "Microbots Formula", "Lowest value between 1 / Maximum Blocks Per Second and (1 / (Blocks Per Second * Attack Speed Stat))"); SpeedBuff = ConfigOption(0.12f, "Buff Speed", "Decimal. Vanilla is 0"); StackSpeedBuff = ConfigOption(value: true, "Stack Speed Buff?", "Vanilla is false"); SpeedBuffDuration = ConfigOption(3.5f, "Speed Buff Duration", "Vanilla is 0"); base.Init(); } public override void Hooks() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown Changes(); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.GetBuffCount(MoveSpeedBuff) > 0) { args.moveSpeedMultAdd += SpeedBuff * (float)sender.GetBuffCount(MoveSpeedBuff); } } public static void Changes() { //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_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_00f0: 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_00fb: Expected O, but got Unknown Texture2D val = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/DLC1/MoveSpeedOnKill/texBuffKillMoveSpeed.tif").WaitForCompletion(); MoveSpeedBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)MoveSpeedBuff).name = "Microbot Speed"; MoveSpeedBuff.buffColor = Color32.op_Implicit(new Color32((byte)240, (byte)196, (byte)174, byte.MaxValue)); MoveSpeedBuff.canStack = StackSpeedBuff; MoveSpeedBuff.iconSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f)); MoveSpeedBuff.isDebuff = false; ContentAddition.AddBuffDef(MoveSpeedBuff); object obj = <>c.<>9__13_0; if (obj == null) { hook_OnEnter val2 = delegate(orig_OnEnter orig, DefenseMatrixOn self) { DefenseMatrixOn.baseRechargeFrequency = BaseRechargeFrequency; DefenseMatrixOn.minimumFireFrequency = MinimumFireFrequency; DefenseMatrixOn.projectileEraserRadius = Radius; orig.Invoke(self); }; <>c.<>9__13_0 = val2; obj = (object)val2; } DefenseMatrixOn.OnEnter += (hook_OnEnter)obj; object obj2 = <>c.<>9__13_1; if (obj2 == null) { hook_DeleteNearbyProjectile val3 = delegate(orig_DeleteNearbyProjectile orig, DefenseMatrixOn self) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) bool flag = orig.Invoke(self); if ((Object)(object)((BaseBodyAttachmentState)self).attachedBody != (Object)null && (Object)(object)((Component)((BaseBodyAttachmentState)self).attachedBody).GetComponent<CharacterBody>() != (Object)null && flag) { ((Component)((BaseBodyAttachmentState)self).attachedBody).GetComponent<CharacterBody>().AddTimedBuffAuthority(MoveSpeedBuff.buffIndex, SpeedBuffDuration); } return flag; }; <>c.<>9__13_1 = val3; obj2 = (object)val3; } DefenseMatrixOn.DeleteNearbyProjectile += (hook_DeleteNearbyProjectile)obj2; LanguageAPI.Add("ITEM_CAPTAINDEFENSEMATRIX_DESC", "Shoot down <style=cIsDamage>1</style> <style=cStack>(+1 per stack)</style> projectiles within <style=cIsDamage>" + Radius + "m</style> every <style=cIsDamage>" + ((1f / BaseRechargeFrequency == 1f) ? "second" : (Math.Round(1f / BaseRechargeFrequency, 2) + " seconds</style>")) + ((SpeedBuff > 0f) ? (", gaining a small" + (StackSpeedBuff ? " stackable" : "") + " <style=cIsUtility>speed buff</style>.") : ".") + " <style=cIsUtility>Recharge rate scales with attack speed</style>."); LanguageAPI.Add("CAPTAIN_PASSIVE_DESCRIPTION", "Passively gain <style=cIsUtility>Microbots</style> that <style=cIsUtility>shoot down nearby enemy projectiles</style>" + ((SpeedBuff > 0f) ? " and <style=cIsUtility>increase movement speed</style> for a short duration." : ".") + " <style=cIsUtility>Drones</style> are also given <style=cIsUtility>Microbots</style>."); } } public static class TryRespawn { [CompilerGenerated] private static class <>O { public static hook_HandlePlayerFirstEntryAnimation <0>__Run_HandlePlayerFirstEntryAnimation; } public static void HopooBugs() { //IL_0011: 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_001c: Expected O, but got Unknown object obj = <>O.<0>__Run_HandlePlayerFirstEntryAnimation; if (obj == null) { hook_HandlePlayerFirstEntryAnimation val = Run_HandlePlayerFirstEntryAnimation; <>O.<0>__Run_HandlePlayerFirstEntryAnimation = val; obj = (object)val; } Run.HandlePlayerFirstEntryAnimation += (hook_HandlePlayerFirstEntryAnimation)obj; } private static void Run_HandlePlayerFirstEntryAnimation(orig_HandlePlayerFirstEntryAnimation orig, Run self, CharacterBody body, Vector3 spawnPosition, Quaternion spawnRotation) { //IL_0004: 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) orig.Invoke(self, body, spawnPosition, spawnRotation); if (!NetworkServer.active || (Object)(object)GameObject.Find("CaptainBody(Clone)") == (Object)null) { return; } foreach (CharacterBody item in CharacterBody.instancesList.Where((CharacterBody x) => ((Object)x).name == "CaptainBody(Clone)")) { if ((Object)(object)((Component)item).GetComponent<RespawnTimerILoveHopooGames>() == (Object)null) { ((Component)item).gameObject.AddComponent<RespawnTimerILoveHopooGames>(); } } } public static void RespawnPlayer(CharacterMaster master) { //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_0029: 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_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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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) if ((Object)(object)master != (Object)null) { Vector3 position = Stage.instance.GetPlayerSpawnTransform().position; NodeGraph groundNodes = SceneInfo.instance.groundNodes; NodeIndex val = groundNodes.FindClosestNode(position, master.GetBody().hullClassification, float.PositiveInfinity); groundNodes.GetNodePosition(val, ref position); master.Respawn(position, ((Component)master).transform.rotation); } else { Main.HCAPTLogger.LogError((object)"CaptainBody(Clone) Master null"); } } } public class RespawnTimerILoveHopooGames : MonoBehaviour { public bool Active; public float Timer; public SkillDef Bullshit; public CharacterBody Body; private void Start() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) Active = true; Bullshit = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepSupplyDrop.asset").WaitForCompletion(); Body = ((Component)this).GetComponent<CharacterBody>(); } private void FixedUpdate() { //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (!Active) { return; } Timer += Time.fixedDeltaTime; if (Timer >= 3f) { Active = false; if ((Object)(object)((Component)Body).GetComponent<SkillLocator>().special.skillDef == (Object)(object)Bullshit && !((InstanceData)((Component)Body).GetComponent<SkillLocator>().special.skillInstanceData).anySupplyDropsAvailable) { TryRespawn.RespawnPlayer(Body.master); } } } } public static class OrbitalsInHiddenRealms { private static Hook fuckyou; public static void HopooLore() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown fuckyou = new Hook((MethodBase)Reflection.GetMethodCached(typeof(CaptainOrbitalSkillDef), "get_isAvailable"), Reflection.GetMethodCached(typeof(OrbitalsInHiddenRealms), "OrbitalSkillsHook")); } private static bool OrbitalSkillsHook(CaptainOrbitalSkillDef self) { return true; } } public class RefreshBeacons : MiscBase { public static float Damage; public List<GameObject> beacons = new List<GameObject>(); public override string Name => ": Special ::::: Refresh Beacons"; public override void Init() { base.Init(); } public override void Hooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown BaseCaptainSupplyDropState.OnEnter += new hook_OnEnter(BaseCaptainSupplyDropState_OnEnter); IdleToChargingState.OnEnter += new hook_OnEnter(IdleToChargingState_OnEnter); } private void BaseCaptainSupplyDropState_OnEnter(orig_OnEnter orig, BaseCaptainSupplyDropState self) { beacons.Add(((EntityState)self).gameObject); orig.Invoke(self); } private void IdleToChargingState_OnEnter(orig_OnEnter orig, BaseState self) { //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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/ExplosionVFX.prefab").WaitForCompletion(); orig.Invoke(self); foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { CharacterBody body = instance.body; if (Object.op_Implicit((Object)(object)body)) { CaptainSupplyDropController component = ((Component)body).GetComponent<CaptainSupplyDropController>(); if (Object.op_Implicit((Object)(object)component)) { component.supplyDrop1Skill.stock = 1; component.supplyDrop2Skill.stock = 1; } } } for (int i = 0; i < beacons.Count; i++) { GameObject val2 = beacons[i]; if (Object.op_Implicit((Object)(object)val2)) { Object.Destroy((Object)(object)val2); EffectManager.SpawnEffect(val, new EffectData { origin = val2.transform.position, scale = 10f }, false); } beacons.Remove(val2); } } } internal class the_c { } }