Please disclose if your mod was created primarily 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 LzD PingsCustomDurations v1.2.17
LzD_PingsCustomDurations.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("LzD_PingsCustomDurations")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LzD_PingsCustomDurations")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("58cc7ef2-bb1a-49b2-a952-7b00eab24bf5")] [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 LzD_PingsCustomDurations; [BepInPlugin("lzd_pingscustomdurations", "LzD Pings Custom Durations", "1.2.17")] [BepInProcess("valheim.exe")] public class LzD_PingsCustomDurations : BaseUnityPlugin { [HarmonyPatch(typeof(Chat), "AddInworldText")] private static class Chat_Awake_Patch { private static void Postfix(ref float ___m_worldTextTTL) { if (modEnabled.Value && ___m_worldTextTTL != pingsDuration.Value) { Log($"Changing worldTextTTl to {pingsDuration.Value}"); ___m_worldTextTTL = pingsDuration.Value; } } } [HarmonyPatch(typeof(Chat), "UpdateWorldTexts")] private static class Chat_UpdateWorldTexts_Patch { private static void Postfix(float ___m_worldTextTTL, List<WorldTextInstance> ___m_worldTexts, float dt) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) if (!modEnabled.Value) { return; } updateFrozenWordTextPositions(___m_worldTexts, dt); IInputSystem current = UnityInput.Current; KeyboardShortcut value = clearPingKey.Value; if (current.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey)) { clearWorldTexts(___m_worldTexts, ___m_worldTextTTL); return; } IInputSystem current2 = UnityInput.Current; value = freezePingKey.Value; if (current2.GetKeyDown(((KeyboardShortcut)(ref value)).MainKey)) { freezeWorldTexts(___m_worldTexts); } } private static void updateFrozenWordTextPositions(List<WorldTextInstance> worldTexts, float dt) { foreach (WorldTextInstance worldText in worldTexts) { if (worldText.m_timer < 0f) { worldText.m_position.y -= dt * 0.15f; } } } private static void freezeWorldTexts(List<WorldTextInstance> worldTexts) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) foreach (WorldTextInstance worldText in worldTexts) { worldText.m_timer = -86400f; ((TMP_Text)worldText.m_textMeshField).color = frozenPingColor.Value; } Log("Freezing pings and shouts."); } private static void clearWorldTexts(List<WorldTextInstance> worldTexts, float maxDuration) { foreach (WorldTextInstance worldText in worldTexts) { worldText.m_timer = maxDuration; } Log("Clearing pings and shouts."); } } public const string modID = "lzd_pingscustomdurations"; public const string modName = "LzD Pings Custom Durations"; public const string modVersion = "1.2.17"; private readonly Harmony harmony = new Harmony("lzd_pingscustomdurations"); private static ConfigEntry<bool> modEnabled; private static ConfigEntry<bool> logsEnabled; private static ConfigEntry<float> pingsDuration; private static ConfigEntry<KeyboardShortcut> freezePingKey; private static ConfigEntry<KeyboardShortcut> clearPingKey; private static ConfigEntry<Color> frozenPingColor; private void Awake() { //IL_007f: 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_00e5: Unknown result type (might be due to invalid IL or missing references) modEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("1 - General", "a. Mod enabled", true, "Enable or disable the mod completely"); logsEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("1 - General", "b. Logs enabled", false, "Enable or disable logs completely"); pingsDuration = ((BaseUnityPlugin)this).Config.Bind<float>("2 - Pings and Shouts", "a. Duration", 15f, "Enable or disable logs completely"); freezePingKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("2 - Pings and Shouts", "b. Freeze pings and shouts hotkey", new KeyboardShortcut((KeyCode)307, Array.Empty<KeyCode>()), "Defines the key to freeze pings and shouts"); clearPingKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("2 - Pings and Shouts", "b. Clear pings and shouts hotkey", new KeyboardShortcut((KeyCode)305, Array.Empty<KeyCode>()), "Defines the key to clear pings and shouts"); frozenPingColor = ((BaseUnityPlugin)this).Config.Bind<Color>("2 - Pings and Shouts", "b. Frozen ping color", new Color(0.25f, 1f, 1f, 0.75f), "Defines the color of frozen pings"); if (modEnabled.Value) { harmony.PatchAll(); Log("LzD Pings Custom Durations mod initialized"); } } private void OnDestroy() { harmony.UnpatchSelf(); } private static void Log(string msg) { if (logsEnabled.Value) { Debug.Log((object)msg); } } }