using 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 IL.RoR2.UI;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
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+ea7a57ac5190360172084d86053441cddf8f29a2")]
[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)
((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);
}
}
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;
}
}
public class HookPassive
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_FromSkillSlot <>9__2_0;
public static Func<Instruction, bool> <>9__2_4;
public static Func<Instruction, bool> <>9__2_5;
public static Func<Instruction, bool> <>9__2_6;
public static Action<List<StripDisplayData>, StripDisplayData, GenericSkill> <>9__2_7;
public static Manipulator <>9__2_1;
public static Func<Instruction, bool> <>9__2_8;
public static Func<Row, Row> <>9__2_9;
public static Manipulator <>9__2_2;
internal object <HookOurself>b__2_0(orig_FromSkillSlot orig, LoadoutPanelController owner, BodyIndex bodyIndex, int skillSlotIndex, GenericSkill skillSlot)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Expected O, but got Unknown
Row val = (Row)orig.Invoke(owner, bodyIndex, skillSlotIndex, skillSlot);
if (((Object)skillSlot.skillFamily).name.Contains("Passive"))
{
Transform val2 = ((Transform)val.rowPanelTransform).Find("SlotLabel") ?? ((Transform)val.rowPanelTransform).Find("LabelContainer").Find("SlotLabel");
if (Object.op_Implicit((Object)(object)val2))
{
((Component)val2).GetComponent<LanguageTextMeshController>().token = "Passive";
}
}
return val;
}
internal void <HookOurself>b__2_1(ILContext il)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Expected O, but got Unknown
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
<>c__DisplayClass2_0 CS$<>8__locals0 = new <>c__DisplayClass2_0();
ILCursor val = new ILCursor(il);
CS$<>8__locals0.skillIndex = -1;
ILLabel val2 = default(ILLabel);
val.GotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref CS$<>8__locals0.skillIndex),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, typeof(GenericSkill).GetField("hideInCharacterSelect")),
(Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref val2)
});
val.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(List<StripDisplayData>).GetMethod("Add"))
});
val.Remove();
val.Emit(OpCodes.Ldloc, CS$<>8__locals0.skillIndex);
val.EmitDelegate<Action<List<StripDisplayData>, StripDisplayData, GenericSkill>>((Action<List<StripDisplayData>, StripDisplayData, GenericSkill>)delegate(List<StripDisplayData> list, StripDisplayData disp, GenericSkill ski)
{
//IL_0026: 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)
if (((Object)ski.skillFamily).name.Contains("Passive"))
{
list.Insert(0, disp);
}
else
{
list.Add(disp);
}
});
}
internal bool <HookOurself>b__2_4(Instruction x)
{
return ILPatternMatchingExt.MatchLdfld(x, typeof(GenericSkill).GetField("hideInCharacterSelect"));
}
internal bool <HookOurself>b__2_5(Instruction x)
{
ILLabel val = default(ILLabel);
return ILPatternMatchingExt.MatchBrtrue(x, ref val);
}
internal bool <HookOurself>b__2_6(Instruction x)
{
return ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(List<StripDisplayData>).GetMethod("Add"));
}
internal void <HookOurself>b__2_7(List<StripDisplayData> list, StripDisplayData disp, GenericSkill ski)
{
//IL_0026: 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)
if (((Object)ski.skillFamily).name.Contains("Passive"))
{
list.Insert(0, disp);
}
else
{
list.Add(disp);
}
}
internal void <HookOurself>b__2_2(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(Row).GetMethod("FromSkillSlot"))
});
val.EmitDelegate<Func<Row, Row>>((Func<Row, Row>)delegate(Row orig)
{
Transform val2 = ((Transform)orig.rowPanelTransform).Find("SlotLabel") ?? ((Transform)orig.rowPanelTransform).Find("LabelContainer").Find("SlotLabel");
if (Object.op_Implicit((Object)(object)val2) && ((Component)val2).GetComponent<LanguageTextMeshController>().token == "Passive")
{
((Transform)orig.rowPanelTransform).SetSiblingIndex(0);
}
return orig;
});
}
internal bool <HookOurself>b__2_8(Instruction x)
{
return ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(Row).GetMethod("FromSkillSlot"));
}
internal Row <HookOurself>b__2_9(Row orig)
{
Transform val = ((Transform)orig.rowPanelTransform).Find("SlotLabel") ?? ((Transform)orig.rowPanelTransform).Find("LabelContainer").Find("SlotLabel");
if (Object.op_Implicit((Object)(object)val) && ((Component)val).GetComponent<LanguageTextMeshController>().token == "Passive")
{
((Transform)orig.rowPanelTransform).SetSiblingIndex(0);
}
return orig;
}
}
[CompilerGenerated]
private sealed class <>c__DisplayClass2_0
{
public int skillIndex;
internal bool <HookOurself>b__3(Instruction x)
{
return ILPatternMatchingExt.MatchLdloc(x, ref skillIndex);
}
}
public static SkillFamily MinerPassive;
public static void ReusePassiveAgression()
{
MinerPassive = DiggerBlacksmithPassive.slot.family;
}
public static void HookOurself()
{
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: Unknown result type (might be due to invalid IL or missing references)
//IL_0127: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Expected O, but got Unknown
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_015c: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Expected O, but got Unknown
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_0186: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Expected O, but got Unknown
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Expected O, but got Unknown
GenericSkill val = Main.Miner.AddComponent<GenericSkill>();
SkillLocator component = Main.Miner.GetComponent<SkillLocator>();
component.passiveSkill.enabled = false;
val._skillFamily = ScriptableObject.CreateInstance<SkillFamily>();
MinerPassive = val.skillFamily;
((Object)MinerPassive).name = ((Object)Main.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);
object obj = <>c.<>9__2_0;
if (obj == null)
{
hook_FromSkillSlot val4 = delegate(orig_FromSkillSlot orig, LoadoutPanelController owner, BodyIndex bodyIndex, int skillSlotIndex, GenericSkill skillSlot)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Expected O, but got Unknown
Row val11 = (Row)orig.Invoke(owner, bodyIndex, skillSlotIndex, skillSlot);
if (((Object)skillSlot.skillFamily).name.Contains("Passive"))
{
Transform val12 = ((Transform)val11.rowPanelTransform).Find("SlotLabel") ?? ((Transform)val11.rowPanelTransform).Find("LabelContainer").Find("SlotLabel");
if (Object.op_Implicit((Object)(object)val12))
{
((Component)val12).GetComponent<LanguageTextMeshController>().token = "Passive";
}
}
return val11;
};
<>c.<>9__2_0 = val4;
obj = (object)val4;
}
Row.FromSkillSlot += (hook_FromSkillSlot)obj;
object obj2 = <>c.<>9__2_1;
if (obj2 == null)
{
Manipulator val5 = delegate(ILContext il)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Expected O, but got Unknown
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
ILCursor val9 = new ILCursor(il);
int skillIndex = -1;
ILLabel val10 = default(ILLabel);
val9.GotoNext(new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref skillIndex),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, typeof(GenericSkill).GetField("hideInCharacterSelect")),
(Instruction x) => ILPatternMatchingExt.MatchBrtrue(x, ref val10)
});
val9.GotoNext(new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(List<StripDisplayData>).GetMethod("Add"))
});
val9.Remove();
val9.Emit(OpCodes.Ldloc, skillIndex);
val9.EmitDelegate<Action<List<StripDisplayData>, StripDisplayData, GenericSkill>>((Action<List<StripDisplayData>, StripDisplayData, GenericSkill>)delegate(List<StripDisplayData> list, StripDisplayData disp, GenericSkill ski)
{
//IL_0026: 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)
if (((Object)ski.skillFamily).name.Contains("Passive"))
{
list.Insert(0, disp);
}
else
{
list.Add(disp);
}
});
};
<>c.<>9__2_1 = val5;
obj2 = (object)val5;
}
CharacterSelectController.BuildSkillStripDisplayData += (Manipulator)obj2;
object obj3 = <>c.<>9__2_2;
if (obj3 == null)
{
Manipulator val6 = delegate(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val7 = new ILCursor(il);
val7.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)typeof(Row).GetMethod("FromSkillSlot"))
});
val7.EmitDelegate<Func<Row, Row>>((Func<Row, Row>)delegate(Row orig)
{
Transform val8 = ((Transform)orig.rowPanelTransform).Find("SlotLabel") ?? ((Transform)orig.rowPanelTransform).Find("LabelContainer").Find("SlotLabel");
if (Object.op_Implicit((Object)(object)val8) && ((Component)val8).GetComponent<LanguageTextMeshController>().token == "Passive")
{
((Transform)orig.rowPanelTransform).SetSiblingIndex(0);
}
return orig;
});
};
<>c.<>9__2_2 = val6;
obj3 = (object)val6;
}
LoadoutPanelController.Rebuild += (Manipulator)obj3;
}
}
[BepInPlugin("prodzpod.MinerSkillReturns", "MinerSkillReturns", "1.0.0")]
[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__24_0;
internal string <Awake>b__24_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.0";
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<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 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_01e3: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
//IL_01ee: 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");
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__24_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__24_0 = val;
obj = (object)val;
}
Language.GetLocalizedStringByToken += (hook_GetLocalizedStringByToken)obj;
}
public void Start()
{
Miner = DiggerPlugin.characterBodyPrefab;
if (Chainloader.PluginInfos.ContainsKey("xyz.yekoc.PassiveAgression"))
{
HookPassive.ReusePassiveAgression();
}
else
{
HookPassive.HookOurself();
}
ScriptableObject.CreateInstance<BlazingHeart>()._Init().Add(HookPassive.MinerPassive);
ScriptableObject.CreateInstance<Burnout>()._Init().Add(Miner.GetComponent<SkillLocator>().utility.skillFamily);
}
}
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);
}
}
}