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 MinerSkillReturns v1.0.3
MinerSkillReturns.dll
Decompiled a year 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); } } }