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 LethalExperience v1.1.0
plugins/LethalExperience.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LethalExperience.Patches; using TMPro; using UnityEngine; 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: AssemblyTitle("LethalExperience")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LethalExperience")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("54608efe-5a52-4472-8a06-332d8a1af55a")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace LethalExperience { [BepInPlugin("Stoneman.LethalExperience", "Lethal Experience", "1.1.0")] public class LethalXP : BaseUnityPlugin { private const string modGUID = "Stoneman.LethalExperience"; private const string modName = "Lethal Experience"; private const string modVersion = "1.1.0"; private const string modAuthor = "Stoneman"; internal static ConfigEntry<int> configXP; internal static ConfigEntry<int> configLevel; internal static ConfigEntry<int> configProfit; internal static ConfigEntry<int> configSkillpoints; internal static ManualLogSource Log; private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown Harmony val = new Harmony("Stoneman.LethalExperience"); val.PatchAll(Assembly.GetExecutingAssembly()); Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)"Lethal Experience loaded!"); configXP = ((BaseUnityPlugin)this).Config.Bind<int>("General", "XP", 0, "How much XP you've gained while playing with this mod. Best not to touch this :)"); configLevel = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Level", 0, "What level you are. Don't cheat now."); configProfit = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Profit", 0, "How much profit did you make the company? Best not to touch this :)"); configSkillpoints = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Skillpoints", 0, "How many skillpoints you have. Don't cheat now."); } public static void AddXP(int xp) { int value = configXP.Value; ConfigEntry<int> obj = configXP; obj.Value += xp; ConfigEntry<int> obj2 = configProfit; obj2.Value += xp; int value2 = configXP.Value; if (configXP.Value >= GetXPRequirement()) { ConfigEntry<int> obj3 = configXP; obj3.Value -= GetXPRequirement(); ConfigEntry<int> obj4 = configLevel; int value3 = obj4.Value; obj4.Value = value3 + 1; HUDManagerPatch.ShowLevelUp(); if (configLevel.Value % 5 == 0) { ConfigEntry<int> obj5 = configSkillpoints; value3 = obj5.Value; obj5.Value = value3 + 1; } } HUDManagerPatch.ShowXPUpdate(value, value2, xp); } public static int GetXP() { return configXP.Value; } public static int GetLevel() { return configLevel.Value; } public static int GetXPRequirement() { return 100 + GetLevel() * 10; } public static int GetSkillpoints() { return configSkillpoints.Value; } public static void SetSkillpoints(int skillpoints) { configSkillpoints.Value = skillpoints; } } } namespace LethalExperience.Patches { [HarmonyPatch] internal class HUDManagerPatch { private static GameObject _tempBar; private static TextMeshProUGUI _tempText; private static float _tempBarTime; private static TextMeshProUGUI _LevelText; private static float _LevelTextTime; [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "DisplayNewScrapFound")] private static void GiveXPForScrap(HUDManager __instance) { List<GrabbableObject> itemsToBeDisplayed = __instance.itemsToBeDisplayed; if (itemsToBeDisplayed != null) { int scrapValue = itemsToBeDisplayed[0].scrapValue; LethalXP.AddXP(scrapValue); } } public static void ShowXPUpdate(int oldXP, int newXP, int xp) { if (!Object.op_Implicit((Object)(object)_tempBar)) { MakeBar(); } GameObject val = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle/XPUpdate/XPBarProgress"); val.GetComponent<Image>().fillAmount = (float)newXP / (float)LethalXP.GetXPRequirement(); ((TMP_Text)_tempText).text = newXP + " / " + (float)LethalXP.GetXPRequirement(); _tempBarTime = 2f; if (!_tempBar.activeSelf) { ((MonoBehaviour)GameNetworkManager.Instance).StartCoroutine(XPBarCoroutine()); } } private static IEnumerator XPBarCoroutine() { _tempBar.SetActive(true); while (_tempBarTime > 0f) { float time = _tempBarTime; _tempBarTime = 0f; yield return (object)new WaitForSeconds(time); } _tempBar.SetActive(false); } public static void ShowLevelUp() { if (!Object.op_Implicit((Object)(object)_LevelText)) { MakeLevelUp(); } _LevelTextTime = 2f; if (!((Component)_LevelText).gameObject.activeSelf) { ((MonoBehaviour)GameNetworkManager.Instance).StartCoroutine(LevelUpCoroutine()); } } public static void MakeLevelUp() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) _LevelText = new GameObject().AddComponent<TextMeshProUGUI>(); ((Object)_LevelText).name = "LevelUp"; GameObject val = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle"); ((TMP_Text)_LevelText).transform.SetParent(val.transform, false); ((TMP_Text)_LevelText).transform.Translate(1.5f, 0.4f, 0f); ((TMP_Text)((Component)_LevelText).GetComponent<TextMeshProUGUI>()).text = "Level Up!"; ((Graphic)((Component)_LevelText).GetComponent<TextMeshProUGUI>()).color = new Color(0.6f, 1f, 1f, 1f); TMP_FontAsset font = ((IEnumerable<TMP_FontAsset>)Resources.FindObjectsOfTypeAll<TMP_FontAsset>()).FirstOrDefault((Func<TMP_FontAsset, bool>)((TMP_FontAsset t) => ((Object)t).name == "3270-HUDIngame")); ((TMP_Text)((Component)_LevelText).GetComponent<TextMeshProUGUI>()).font = font; ((TMP_Text)((Component)_LevelText).GetComponent<TextMeshProUGUI>()).fontSize = 50f; ((TMP_Text)((Component)_LevelText).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514; ((Component)_LevelText).gameObject.SetActive(false); } private static IEnumerator LevelUpCoroutine() { ((Component)_LevelText).gameObject.SetActive(true); while (_LevelTextTime > 0f) { float time = _LevelTextTime; _LevelTextTime = 0f; yield return (object)new WaitForSeconds(time); } ((Component)_LevelText).gameObject.SetActive(false); } private static void MakeBar() { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_0106: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("/Systems/UI/Canvas/QuickMenu/XPBar"); QuickMenuManagerPatch.MakeNewXPBar(); val = GameObject.Find("/Systems/UI/Canvas/QuickMenu/XPBar"); _tempBar = Object.Instantiate<GameObject>(val); ((Object)_tempBar).name = "XPUpdate"; _tempText = _tempBar.GetComponentInChildren<TextMeshProUGUI>(); GameObject val2 = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle"); _tempBar.transform.SetParent(val2.transform, false); _tempBar.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); GameObject val3 = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle/XPUpdate/XPLevel"); Object.Destroy((Object)(object)val3); GameObject val4 = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle/XPUpdate/XPProfit"); Object.Destroy((Object)(object)val4); _tempBar.transform.Translate(3.1f, -2.1f, 0f); Vector3 localPosition = _tempBar.transform.localPosition; _tempBar.transform.localPosition = new Vector3(localPosition.x, localPosition.y + 5f, localPosition.z); _tempBar.SetActive(false); } } [HarmonyPatch] internal class QuickMenuManagerPatch { private static GameObject _xpBar; private static GameObject _xpBarProgress; private static TextMeshProUGUI _xpText; private static TextMeshProUGUI _xpLevel; private static TextMeshProUGUI _profit; [HarmonyPostfix] [HarmonyPatch(typeof(QuickMenuManager), "OpenQuickMenu")] private static void QuickMenuXPBar(QuickMenuManager __instance) { if (__instance.isMenuOpen) { if (!Object.op_Implicit((Object)(object)_xpBar) || !Object.op_Implicit((Object)(object)_xpBarProgress)) { MakeNewXPBar(); } _xpBar.SetActive(true); _xpBarProgress.SetActive(true); } } [HarmonyPostfix] [HarmonyPatch(typeof(QuickMenuManager), "Update")] private static void XPMenuUpdate(QuickMenuManager __instance) { if (Object.op_Implicit((Object)(object)_xpBar) && Object.op_Implicit((Object)(object)_xpBarProgress)) { if (__instance.settingsPanel.activeSelf || __instance.leaveGameConfirmPanel.activeSelf) { _xpBar.SetActive(false); _xpBarProgress.SetActive(false); return; } _xpBar.SetActive(true); _xpBarProgress.SetActive(true); ((TMP_Text)_xpText).text = LethalXP.configXP.Value + " / " + LethalXP.GetXPRequirement(); ((TMP_Text)_xpLevel).text = "Level: " + LethalXP.configLevel.Value; ((TMP_Text)_profit).text = "You've made.. " + LethalXP.configProfit.Value + "$"; _xpBarProgress.GetComponent<Image>().fillAmount = (float)LethalXP.configXP.Value / (float)LethalXP.GetXPRequirement(); } } public static void MakeNewXPBar() { //IL_0077: 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_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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_0359: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("/Systems/UI/Canvas/QuickMenu"); if (!Object.op_Implicit((Object)(object)_xpBar)) { GameObject val2 = GameObject.Find("/Systems/UI/Canvas/EndgameStats/LevelUp/LevelUpBox"); _xpBar = Object.Instantiate<GameObject>(val2); ((Object)_xpBar).name = "XPBar"; _xpBar.transform.SetParent(val.transform, false); _xpBar.transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); _xpBar.transform.Translate(-2f, 1f, 0f); } if (!Object.op_Implicit((Object)(object)_xpBarProgress)) { GameObject val3 = GameObject.Find("/Systems/UI/Canvas/EndgameStats/LevelUp/LevelUpMeter"); _xpBarProgress = Object.Instantiate<GameObject>(val3); ((Object)_xpBarProgress).name = "XPBarProgress"; _xpBarProgress.transform.SetParent(_xpBar.transform, false); _xpBarProgress.GetComponent<Image>().fillAmount = 0f; _xpBarProgress.transform.localScale = new Vector3(0.597f, 5.21f, 1f); _xpBarProgress.transform.Translate(-0.8f, 0.2f, 0f); Vector3 localPosition = _xpBarProgress.transform.localPosition; _xpBarProgress.transform.localPosition = new Vector3(localPosition.x + 7f, localPosition.y - 3.5f, 0f); GameObject val4 = GameObject.Find("/Systems/UI/Canvas/EndgameStats/LevelUp/Total"); _xpText = Object.Instantiate<GameObject>(val4).GetComponent<TextMeshProUGUI>(); ((Object)_xpText).name = "XPText"; ((TMP_Text)_xpText).alignment = (TextAlignmentOptions)514; ((TMP_Text)_xpText).SetText("0/1000", true); ((TMP_Text)_xpText).transform.SetParent(_xpBar.transform, false); ((Graphic)_xpText).color = new Color(1f, 0.6f, 0f, 1f); ((TMP_Text)_xpText).transform.Translate(-0.75f, 0.21f, 0f); _xpLevel = Object.Instantiate<GameObject>(val4).GetComponent<TextMeshProUGUI>(); ((Object)_xpLevel).name = "XPLevel"; ((TMP_Text)_xpLevel).alignment = (TextAlignmentOptions)514; ((TMP_Text)_xpLevel).SetText("Level: 0", true); ((TMP_Text)_xpLevel).transform.SetParent(_xpBar.transform, false); ((Graphic)_xpLevel).color = new Color(1f, 0.6f, 0f, 1f); ((TMP_Text)_xpLevel).transform.Translate(-1f, 0.4f, 0f); _profit = Object.Instantiate<GameObject>(val4).GetComponent<TextMeshProUGUI>(); ((Object)_profit).name = "XPProfit"; ((TMP_Text)_profit).alignment = (TextAlignmentOptions)514; ((TMP_Text)_profit).SetText("You've made.. 0$.", true); ((TMP_Text)_profit).transform.SetParent(_xpBar.transform, false); ((Graphic)_profit).color = new Color(1f, 0.6f, 0f, 1f); ((TMP_Text)_profit).transform.Translate(-0.8f, 0f, 0f); } } } }