Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of MinerSkillReturns v1.0.3
MinerSkillReturns.dll
Decompiled 7 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using DiggerPlugin; using EntityStates; using EntityStates.Bandit2; using EntityStates.Digger; using HG; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using MonoMod.RuntimeDetour; using On.EntityStates; using On.RoR2; using On.RoR2.UI; using PassiveAgression.ModCompat; using R2API; using RoR2; using RoR2.Skills; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MinerSkillReturns")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MinerSkillReturns")] [assembly: AssemblyTitle("MinerSkillReturns")] [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 MinerSkillReturns { public class AddContent { public static void Init() { //IL_004e: 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) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_0086: Expected O, but got Unknown //IL_00a1: 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_00b7: 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_00d8: Expected O, but got Unknown //IL_00f1: 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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Expected O, but got Unknown //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: 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_0232: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Expected O, but got Unknown //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) BlazingHeart.HeatActive = ScriptableObject.CreateInstance<BuffDef>(); BlazingHeart.HeatActive.canStack = false; ((Object)BlazingHeart.HeatActive).name = Language.GetString("MinerSkillReturns_HEATACTIVE".ToUpper()); BlazingHeart.HeatActive.iconSprite = Main.AssetBundle.LoadAsset<Sprite>("Assets/minerbuffiicon.png"); BlazingHeart.HeatActive.buffColor = Color.white; ContentAddition.AddBuffDef(BlazingHeart.HeatActive); Sprite sprite = Addressables.LoadAssetAsync<Sprite>((object)"Assets/RoR2/Base/UI/Generic UI/Textures/texUIMainHealthbar.png").WaitForCompletion(); BlazingHeart.Crosshair = new GameObject("Blazing Heart Crosshair"); RectTransform val = BlazingHeart.Crosshair.AddComponent<RectTransform>(); ((Transform)val).position = new Vector3(32f, 0f, 0f); val.pivot = Vector2.oneVector * 0.5f; BlazingHeart.BlazingHeartUI blazingHeartUI = BlazingHeart.Crosshair.AddComponent<BlazingHeart.BlazingHeartUI>(); GameObject val2 = new GameObject("Backdrop"); RectTransform val3 = val2.AddComponent<RectTransform>(); ((Transform)val3).position = new Vector3(32f, 0f, 0f); ((Transform)val3).SetParent((Transform)(object)val); val3.pivot = Vector2.oneVector * 0.5f; val3.sizeDelta = new Vector2(12f, 32f); CanvasRenderer val4 = val2.AddComponent<CanvasRenderer>(); Image val5 = val2.AddComponent<Image>(); val5.sprite = sprite; val5.fillAmount = 1f; val5.fillCenter = true; ((Graphic)val5).color = new Color(0.1321f, 0.043f, 0.0705f, 0.7725f); GameObject val6 = new GameObject("Heat"); RectTransform val7 = val6.AddComponent<RectTransform>(); ((Transform)val7).position = new Vector3(32f, 0f, 0f); ((Transform)val7).SetParent((Transform)(object)val); val7.pivot = Vector2.oneVector * 0.5f; val7.sizeDelta = new Vector2(12f, 0f); CanvasRenderer val8 = val6.AddComponent<CanvasRenderer>(); Image val9 = val6.AddComponent<Image>(); val9.sprite = sprite; val9.fillAmount = 1f; val9.fillCenter = true; ((Graphic)val9).color = new Color(1f, 0.4f, 0f, 1f); Object.DontDestroyOnLoad((Object)(object)BlazingHeart.Crosshair); GameObject val10 = new GameObject("HeatText"); RectTransform val11 = val10.AddComponent<RectTransform>(); ((Transform)val11).position = new Vector3(32f, -24f, 0f); ((Transform)val11).SetParent((Transform)(object)val); HGTextMeshProUGUI val12 = val10.AddComponent<HGTextMeshProUGUI>(); ((TMP_Text)val12).fontSize = 16f; ((TMP_Text)val12).alignment = (TextAlignmentOptions)4098; ((Graphic)val12).color = new Color(1f, 0.4f, 0f, 1f); Burnout.BurnoutState.effect = LegacyResourcesAPI.LoadAsync<GameObject>("Prefabs/Effects/OmniEffect/OmniExplosionVFXCommandoGrenade").WaitForCompletion(); } } public class BlazingHeart : Skill { public class BlazingHeartUI : MonoBehaviour { public Image img; public HGTextMeshProUGUI text; public float blink = 0f; public void Start() { img = ((Component)((Component)this).gameObject.transform.Find("Heat")).GetComponent<Image>(); text = ((Component)((Component)this).gameObject.transform.Find("HeatText")).GetComponent<HGTextMeshProUGUI>(); UpdateHeat(0f); } public void Update() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) if (!(blink <= 0f)) { blink -= Time.deltaTime; if (blink <= 0f) { ((Graphic)img).color = new Color(1f, 0.4f, 0f, 1f); ((Graphic)text).color = new Color(1f, 0.4f, 0f, 1f); } } } public void UpdateHeat(float heat) { //IL_0029: 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_0056: 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) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) ((Component)img).transform.localPosition = new Vector3(0f, 16f * heat / 100f - 16f, 0f); ((RectTransform)((Component)img).transform).sizeDelta = new Vector2(12f, 32f * heat / 100f); if (Main.DisplayPercentage.Value) { ((TMP_Text)text).text = Mathf.Floor(heat) + "%"; } blink = 0.15f; ((Graphic)img).color = new Color(1f, 0.8f, 0.5f, 1f); ((Graphic)text).color = new Color(1f, 0.8f, 0.5f, 1f); } } public class BlazingHeartManager : MonoBehaviour { [SyncVar] public float heat = 0f; public float time = 0f; public float time2 = 0f; public BlazingHeartUI ui; public void Update() { //IL_00da: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((Component)this).gameObject) || !Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<CharacterBody>())) { return; } CharacterBody component = ((Component)this).gameObject.GetComponent<CharacterBody>(); if (!component.HasBuff(HeatActive)) { return; } time += Time.deltaTime; time2 += Time.deltaTime; if (time2 > 0.3f) { time2 %= 0.3f; if (Object.op_Implicit((Object)(object)ui)) { ui.blink = 0.15f; ((Graphic)((Component)ui.img).GetComponent<Image>()).color = new Color(1f, 0.8f, 0.5f, 1f); } } while (time > 1f) { time -= 1f; Decrement(100f / Main.PassiveDrain.Value); if (heat <= 0f) { time = 0f; time2 = 0f; break; } } } public void Increment(float amount) { //IL_0089: 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_009b: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)((Component)this).gameObject) || !Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<CharacterBody>())) { return; } CharacterBody component = ((Component)this).gameObject.GetComponent<CharacterBody>(); float num = heat + amount; if (num >= 100f) { heat = 100f; if (!component.HasBuff(HeatActive)) { component.AddBuff(HeatActive); EffectManager.SpawnEffect(StealthMode.smokeBombEffectPrefab, new EffectData { rootObject = ((Component)this).gameObject, scale = 1.5f, origin = component.footPosition }, false); Util.PlaySound("Play_mage_m1_shoot", ((Component)this).gameObject); Util.PlaySound("Play_mage_m1_impact", ((Component)this).gameObject); Util.PlaySound("Play_teamWarCry_activate", ((Component)this).gameObject); BurnEffectController val = ((Component)this).gameObject.AddComponent<BurnEffectController>(); val.effectType = BurnEffectController.normalEffect; val.target = ((Component)component.modelLocator.modelTransform).gameObject; } } else { heat = num; } if (Object.op_Implicit((Object)(object)ui)) { ui.UpdateHeat(heat); } } public void Decrement(float amount) { if (Object.op_Implicit((Object)(object)((Component)this).gameObject) && Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<CharacterBody>())) { CharacterBody component = ((Component)this).gameObject.GetComponent<CharacterBody>(); float num = heat - amount; if (num <= 0f) { component.RemoveBuff(HeatActive); heat = 0f; Util.PlaySound("Play_UI_chest_unlock", ((Component)component).gameObject); Util.PlaySound("Play_bandit_shift_jump", ((Component)component).gameObject); Object.Destroy((Object)(object)((Component)this).gameObject.GetComponent<BurnEffectController>()); } else { heat = num; } if (Object.op_Implicit((Object)(object)ui)) { ui.UpdateHeat(heat); } } } } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_RecalculateStats <>9__3_0; internal void <Init>b__3_0(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self) && self.HasBuff(HeatActive)) { self.skillLocator.secondary.cooldownScale = 0f; if ((Object)(object)self.skillLocator.utility.skillDef != (Object)(object)Burnout.Instance) { self.skillLocator.utility.cooldownScale = 0f; } self.skillLocator.special.cooldownScale = 0f; } } } public static BuffDef HeatActive; public static GameObject Crosshair; public static BlazingHeart Instance; public Action<Run> unhook; public Hook _Hook4; public static List<CharacterBody> eligibleM1 = new List<CharacterBody>(); public override void Init() { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown Instance = this; Main.StringFormats.Add("MINERSKILLRETURNS_BLAZINGHEART_KEYWORD", new object[1] { Main.M1Multiplier.Value }); ((SkillDef)this).icon = Main.AssetBundle.LoadAsset<Sprite>("Assets/Blazing_Heart.png"); ((SkillDef)this).keywordTokens = new string[1] { "MINERSKILLRETURNS_BLAZINGHEART_KEYWORD" }; ((SkillDef)this).baseRechargeInterval = 0f; ((SkillDef)this).activationStateMachineName = "Body"; ((SkillDef)this).activationState = EntityStateMachine.FindByCustomName(Main.Miner, "Body").mainStateType; ((SkillDef)this).canceledFromSprinting = false; ((SkillDef)this).cancelSprintingOnActivation = false; object obj = <>c.<>9__3_0; if (obj == null) { hook_RecalculateStats val = delegate(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self) && self.HasBuff(HeatActive)) { self.skillLocator.secondary.cooldownScale = 0f; if ((Object)(object)self.skillLocator.utility.skillDef != (Object)(object)Burnout.Instance) { self.skillLocator.utility.cooldownScale = 0f; } self.skillLocator.special.cooldownScale = 0f; } }; <>c.<>9__3_0 = val; obj = (object)val; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { OnHook(); unhook = delegate { OnUnhook(); Run.onRunDestroyGlobal -= unhook; }; Run.onRunDestroyGlobal += unhook; return null; } public override void OnUnassigned([NotNull] GenericSkill skillSlot) { ((SkillDef)this).OnUnassigned(skillSlot); EntityState state = skillSlot.stateMachine.state; if (state != null && state is DiggerMain) { state.OnEnter(); } } public void OnHook() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown eligibleM1.Clear(); BaseState.OnEnter += new hook_OnEnter(Hook); GlobalEventManager.onServerDamageDealt += Hook2; GlobalEventManager.onClientDamageNotified += Hook22; CrosshairManager.UpdateCrosshair += new hook_UpdateCrosshair(Hook3); _Hook4 = new Hook((MethodBase)typeof(DiggerMain).GetMethod("OnEnter"), (Delegate)new Action<Action<DiggerMain>, DiggerMain>(Hook4)); } public void OnUnhook() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown BaseState.OnEnter -= new hook_OnEnter(Hook); GlobalEventManager.onServerDamageDealt -= Hook2; GlobalEventManager.onClientDamageNotified -= Hook22; CrosshairManager.UpdateCrosshair -= new hook_UpdateCrosshair(Hook3); _Hook4.Free(); } public void Hook(orig_OnEnter orig, BaseState self) { orig.Invoke(self); if (!PassiveEnabled((EntityState)(object)self)) { return; } BlazingHeartManager blazingHeartManager = default(BlazingHeartManager); if (!((Component)((EntityState)self).characterBody).gameObject.TryGetComponent<BlazingHeartManager>(ref blazingHeartManager)) { ((Component)((EntityState)self).characterBody).gameObject.AddComponent<BlazingHeartManager>(); } Type type = ((object)self).GetType(); if (((SerializableEntityStateType)(ref ((EntityState)self).characterBody.skillLocator.primary.skillDef.activationState)).stateType == type) { if (((EntityState)self).characterBody.HasBuff(HeatActive)) { self.damageStat *= Main.M1Multiplier.Value / 100f; } OnM1(((EntityState)self).characterBody); } if (((SerializableEntityStateType)(ref ((EntityState)self).characterBody.skillLocator.secondary.skillDef.activationState)).stateType == type) { OnM2(((EntityState)self).characterBody); } if (((SerializableEntityStateType)(ref ((EntityState)self).characterBody.skillLocator.utility.skillDef.activationState)).stateType == type) { OnUtil(((EntityState)self).characterBody); } if (((SerializableEntityStateType)(ref ((EntityState)self).characterBody.skillLocator.special.skillDef.activationState)).stateType == type) { OnSpecial(((EntityState)self).characterBody); } } public void Hook2(DamageReport report) { BlazingHeartManager blazingHeartManager = default(BlazingHeartManager); if (report != null && Object.op_Implicit((Object)(object)report.attackerBody) && Object.op_Implicit((Object)(object)((Component)report.attackerBody).gameObject) && ((Component)report.attackerBody).gameObject.TryGetComponent<BlazingHeartManager>(ref blazingHeartManager) && eligibleM1.Contains(report.attackerBody)) { eligibleM1.Remove(report.attackerBody); ((Component)report.attackerBody).gameObject.GetComponent<BlazingHeartManager>().Increment(Main.M1Gain.Value); } } public void Hook22(DamageDealtMessage report) { BlazingHeartManager blazingHeartManager = default(BlazingHeartManager); if (report != null && Object.op_Implicit((Object)(object)report.attacker) && Object.op_Implicit((Object)(object)report.attacker.GetComponent<CharacterBody>()) && Object.op_Implicit((Object)(object)((Component)report.attacker.GetComponent<CharacterBody>()).gameObject) && ((Component)report.attacker.GetComponent<CharacterBody>()).gameObject.TryGetComponent<BlazingHeartManager>(ref blazingHeartManager) && eligibleM1.Contains(report.attacker.GetComponent<CharacterBody>())) { eligibleM1.Remove(report.attacker.GetComponent<CharacterBody>()); report.attacker.GetComponent<BlazingHeartManager>().Increment(Main.M1Gain.Value); } } public void Hook3(orig_UpdateCrosshair orig, CrosshairManager self, CharacterBody targetBody, Vector3 crosshairWorldPosition, Camera uiCamera) { //IL_0016: 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_00f8: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, targetBody, crosshairWorldPosition, uiCamera); BlazingHeartManager blazingHeartManager = default(BlazingHeartManager); if (Object.op_Implicit((Object)(object)targetBody) && NetworkUser.localPlayers.Any((NetworkUser x) => (Object)(object)x.GetCurrentBody() == (Object)(object)targetBody) && Object.op_Implicit((Object)(object)((Component)targetBody).gameObject) && ((Component)targetBody).gameObject.TryGetComponent<BlazingHeartManager>(ref blazingHeartManager) && !Object.op_Implicit((Object)(object)((Component)targetBody).gameObject.GetComponent<BlazingHeartManager>().ui)) { GameObject val = PrefabAPI.InstantiateClone(Crosshair, "Blazing Heart Crosshair(Clone)", false); val.transform.SetParent(((Component)self).gameObject.transform.Find("MainContainer/MainUIArea/CrosshairCanvas/CrosshairExtras")); val.transform.localPosition = new Vector3(32f, 0f, 0f); val.transform.localScale = new Vector3(1f, 1f, 1f); ((Component)targetBody).gameObject.GetComponent<BlazingHeartManager>().ui = val.GetComponent<BlazingHeartUI>(); } } public void Hook4(Action<DiggerMain> orig, DiggerMain self) { orig(self); BlazingHeartManager blazingHeartManager = default(BlazingHeartManager); if (Object.op_Implicit((Object)(object)((EntityState)self).gameObject) && ((EntityState)self).gameObject.TryGetComponent<BlazingHeartManager>(ref blazingHeartManager)) { self.gotJunkie = true; self.adrenalineCap = -1f; } } public bool PassiveEnabled(EntityState self) { //IL_0024: 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) return Object.op_Implicit((Object)(object)self.characterBody) && Object.op_Implicit((Object)(object)Main.Miner.GetComponent<CharacterBody>()) && self.characterBody.bodyIndex == Main.Miner.GetComponent<CharacterBody>().bodyIndex && Object.op_Implicit((Object)(object)self.characterBody.skillLocator) && self.characterBody.skillLocator.allSkills.Any((GenericSkill x) => (Object)(object)x.skillDef == (Object)(object)this); } public static void OnM1(CharacterBody characterBody) { if (!eligibleM1.Contains(characterBody)) { eligibleM1.Add(characterBody); } } public static bool IsHeat(CharacterBody body, out BlazingHeartManager manager) { manager = null; if (!Object.op_Implicit((Object)(object)body) || !body.HasBuff(HeatActive) || !Object.op_Implicit((Object)(object)((Component)body).gameObject) || !Object.op_Implicit((Object)(object)((Component)body).gameObject.GetComponent<BlazingHeartManager>())) { return false; } manager = ((Component)body).gameObject.GetComponent<BlazingHeartManager>(); return true; } public static void OnM2(CharacterBody characterBody) { eligibleM1.Remove(characterBody); if (IsHeat(characterBody, out var manager) && manager.heat >= Main.M2Cost.Value) { manager.Decrement(Main.M2Cost.Value); } } public static void OnUtil(CharacterBody characterBody) { eligibleM1.Remove(characterBody); if (IsHeat(characterBody, out var manager) && manager.heat >= Main.UtilCost.Value) { manager.Decrement(Main.UtilCost.Value); } } public static void OnSpecial(CharacterBody characterBody) { eligibleM1.Remove(characterBody); if (IsHeat(characterBody, out var manager) && manager.heat >= Main.SpecialCost.Value) { manager.Decrement(Main.SpecialCost.Value); } } } public class Burnout : Skill { public class BurnoutState : BaseSkillState { public static GameObject effect; public float baseDuration = 0.35f; private float duration; public override void OnEnter() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00c9: 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_00d3: 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_00e8: 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_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_012c: 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) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Expected O, but got Unknown //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: 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_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0215: 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) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Expected O, but got Unknown //IL_023e: 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_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration; ((EntityState)this).PlayAnimation("FullBody, Override", "Flip", "Flip.playbackRate", 1f, 0f); EffectManager.SpawnEffect(effect, new EffectData { origin = ((EntityState)this).characterBody.corePosition, scale = 1.5f }, false); Util.PlaySound("Play_captain_shift_impact", ((EntityState)this).gameObject); Util.PlaySound("Play_commando_shift", ((EntityState)this).gameObject); ((EntityState)this).characterBody.characterMotor.velocity = Vector3.ProjectOnPlane(((EntityState)this).characterBody.characterMotor.velocity, ((EntityState)this).gameObject.transform.up) + ((EntityState)this).gameObject.transform.up * 10f; BlastAttack val = new BlastAttack { radius = 14f, procCoefficient = 1f, position = ((EntityState)this).characterBody.corePosition, attacker = ((EntityState)this).gameObject, crit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), baseDamage = ((BaseState)this).damageStat * Main.BurnoutDamage.Value / 100f, falloffModel = (FalloffModel)0, baseForce = 500f, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), damageType = DamageTypeCombo.op_Implicit((DamageType)32), attackerFiltering = (AttackerFiltering)2 }; val.Fire(); DamageInfo val2 = new DamageInfo { damage = (Main.BurnoutMaxHP.Value ? ((EntityState)this).characterBody.healthComponent.fullHealth : ((EntityState)this).characterBody.healthComponent.health) * Main.BurnoutSelfDamage.Value / 100f, position = ((EntityState)this).characterBody.corePosition, force = Vector3.zero, damageColorIndex = (DamageColorIndex)0, attacker = null, inflictor = null, crit = false, procCoefficient = 0f, procChainMask = default(ProcChainMask), damageType = DamageTypeCombo.op_Implicit((DamageType)2) }; if (Main.BurnoutPreventSuicide.Value) { val2.damageType |= DamageTypeCombo.op_Implicit((DamageType)1); } ((EntityState)this).characterBody.healthComponent.TakeDamage(val2); BlazingHeart.BlazingHeartManager blazingHeartManager = default(BlazingHeart.BlazingHeartManager); if (((EntityState)this).gameObject.TryGetComponent<BlazingHeart.BlazingHeartManager>(ref blazingHeartManager)) { blazingHeartManager.Increment(Main.BurnoutGain.Value); } else { ((EntityState)this).characterBody.SetBuffCount(Buffs.goldRushBuff.buffIndex, ((EntityState)this).characterBody.GetBuffCount(Buffs.goldRushBuff) + (int)Main.BurnoutGain2.Value); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if ((((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) || !((BaseSkillState)this).IsKeyDownAuthority()) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public static Burnout Instance; public override void Init() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) Instance = this; Main.StringFormats.Add("MINERSKILLRETURNS_BURNOUT_DESC", new object[4] { Main.BurnoutDamage.Value, Main.BurnoutSelfDamage.Value, Main.BurnoutGain.Value, Main.BurnoutPreventSuicide.Value ? "Cannot die from self-damage." : "" }); bool flag = default(bool); ContentAddition.AddEntityState<BurnoutState>(ref flag); ((SkillDef)this).icon = Main.AssetBundle.LoadAsset<Sprite>("Assets/Burnout.png"); ((SkillDef)this).activationState = new SerializableEntityStateType(typeof(BurnoutState)); ((SkillDef)this).activationStateMachineName = "Weapon"; ((SkillDef)this).baseMaxStock = 1; ((SkillDef)this).isCombatSkill = true; ((SkillDef)this).baseRechargeInterval = 5f; ((SkillDef)this).interruptPriority = (InterruptPriority)1; } } [BepInPlugin("prodzpod.MinerSkillReturns", "MinerSkillReturns", "1.0.3")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_GetLocalizedStringByToken <>9__26_0; internal string <Awake>b__26_0(orig_GetLocalizedStringByToken orig, Language self, string token) { if (StringFormats.TryGetValue(token, out var value)) { string text = orig.Invoke(self, token); for (int i = 0; i < value.Length; i++) { text = text.Replace($"{{{i}}}", value[i]?.ToString() ?? "Null"); } return text; } return orig.Invoke(self, token); } } public const string PluginGUID = "prodzpod.MinerSkillReturns"; public const string PluginAuthor = "prodzpod"; public const string PluginName = "MinerSkillReturns"; public const string PluginVersion = "1.0.3"; public static ManualLogSource Log; public static PluginInfo pluginInfo; public static ConfigFile Config; public static ConfigEntry<float> M1Gain; public static ConfigEntry<float> PassiveDrain; public static ConfigEntry<float> M1Multiplier; public static ConfigEntry<float> M2Cost; public static ConfigEntry<float> UtilCost; public static ConfigEntry<float> SpecialCost; public static ConfigEntry<bool> DisplayPercentage; public static ConfigEntry<float> BurnoutDamage; public static ConfigEntry<float> BurnoutSelfDamage; public static ConfigEntry<float> BurnoutGain; public static ConfigEntry<float> BurnoutGain2; public static ConfigEntry<bool> BurnoutMaxHP; public static ConfigEntry<bool> BurnoutPreventSuicide; private static AssetBundle _assetBundle; public static Dictionary<string, object[]> StringFormats = new Dictionary<string, object[]>(); public static GameObject Miner; public static SkillFamily MinerPassive; public static AssetBundle AssetBundle { get { if ((Object)(object)_assetBundle == (Object)null) { _assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(pluginInfo.Location), "minerskillreturns")); } return _assetBundle; } } public void Awake() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; Log = ((BaseUnityPlugin)this).Logger; Config = new ConfigFile(Path.Combine(Paths.ConfigPath, "prodzpod.MinerSkillReturns.cfg"), true); M1Gain = Config.Bind<float>("Blazing Heart", "Heat gain per M1", 9f, "100 is max"); PassiveDrain = Config.Bind<float>("Blazing Heart", "Passive heat loss on scorching", 20f, "in seconds"); M1Multiplier = Config.Bind<float>("Blazing Heart", "M1 Damage Multiplier on scorching", 154f, "in % of bar, default is returns value"); M2Cost = Config.Bind<float>("Blazing Heart", "M2 heat drain per free use", 10f, "in % of bar, made smth up"); UtilCost = Config.Bind<float>("Blazing Heart", "Util heat drain per free use", 5f, "in % of bar, made smth up"); SpecialCost = Config.Bind<float>("Blazing Heart", "Special heat drain per free use", 20f, "in % of bar, default is returns value"); DisplayPercentage = Config.Bind<bool>("Blazing Heart", "Display Percentage", true, "next to hud bar"); BurnoutDamage = Config.Bind<float>("Burnout", "Damage Coefficient", 500f, "in %, default is returns value"); BurnoutSelfDamage = Config.Bind<float>("Burnout", "Self Damage %", 25f, "default is returns value"); BurnoutGain = Config.Bind<float>("Burnout", "Heat gain %", 25f, "default is returns value"); BurnoutGain2 = Config.Bind<float>("Burnout", "Adrenaline gain", 2f, "default is returns value"); BurnoutMaxHP = Config.Bind<bool>("Burnout", "Use max HP", false, "if false, uses current remaining hp."); BurnoutPreventSuicide = Config.Bind<bool>("Burnout", "Prevent Suicide", true, "does not die from using burnout. default is returns value"); AddContent.Init(); object obj = <>c.<>9__26_0; if (obj == null) { hook_GetLocalizedStringByToken val = delegate(orig_GetLocalizedStringByToken orig, Language self, string token) { if (StringFormats.TryGetValue(token, out var value)) { string text = orig.Invoke(self, token); for (int i = 0; i < value.Length; i++) { text = text.Replace($"{{{i}}}", value[i]?.ToString() ?? "Null"); } return text; } return orig.Invoke(self, token); }; <>c.<>9__26_0 = val; obj = (object)val; } Language.GetLocalizedStringByToken += (hook_GetLocalizedStringByToken)obj; } public void Start() { //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: 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_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Expected O, but got Unknown //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) Miner = DiggerPlugin.characterBodyPrefab; if (Chainloader.PluginInfos.ContainsKey("xyz.yekoc.PassiveAgression")) { leech(); } else { GenericSkill val = Miner.AddComponent<GenericSkill>(); SkillLocator component = Miner.GetComponent<SkillLocator>(); component.passiveSkill.enabled = false; val._skillFamily = ScriptableObject.CreateInstance<SkillFamily>(); MinerPassive = val.skillFamily; ((Object)MinerPassive).name = ((Object)Miner).name + "Passive"; SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.skillNameToken = component.passiveSkill.skillNameToken; val2.skillDescriptionToken = component.passiveSkill.skillDescriptionToken; val2.keywordTokens = ((component.passiveSkill.keywordToken.Length <= 0) ? null : new string[1] { component.passiveSkill.keywordToken }); ((Object)val2).name = val2.skillNameToken; val2.baseRechargeInterval = 0f; val2.activationStateMachineName = "Body"; val2.activationState = new SerializableEntityStateType(typeof(DiggerMain)); val2.icon = component.passiveSkill.icon; ContentAddition.AddSkillDef(val2); SkillFamily minerPassive = MinerPassive; Variant[] array = new Variant[1]; Variant val3 = new Variant { skillDef = val2 }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); array[0] = val3; minerPassive.variants = (Variant[])(object)array; ContentAddition.AddSkillFamily(MinerPassive); } ScriptableObject.CreateInstance<BlazingHeart>()._Init().Add(MinerPassive); ScriptableObject.CreateInstance<Burnout>()._Init().Add(Miner.GetComponent<SkillLocator>().utility.skillFamily); static void leech() { MinerPassive = DiggerBlacksmithPassive.slot.family; } } } public abstract class Skill : SkillDef { public Skill _Init() { Init(); base.skillNameToken = ("MinerSkillReturns_" + ((object)this).GetType().Name).ToUpper(); base.skillDescriptionToken = base.skillNameToken + "_DESC"; ContentAddition.AddSkillDef((SkillDef)(object)this); return this; } public virtual void Init() { } public void Add(SkillFamily family) { //IL_0009: 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_002b: Expected O, but got Unknown ref Variant[] variants = ref family.variants; Variant val = new Variant { skillDef = (SkillDef)(object)this }; ((Variant)(ref val)).viewableNode = new Node(base.skillNameToken, false, (Node)null); ArrayUtils.ArrayAppend<Variant>(ref variants, ref val); } } }