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 DamageOverlay v1.0.4
DamageOverlay.dll
Decompiled 6 months agousing System; 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 HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("blacks7ar")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.4")] [assembly: AssemblyInformationalVersion("1.0.4")] [assembly: AssemblyProduct("DamageOverlay")] [assembly: AssemblyTitle("DamageOverlay")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.4.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 DamageOverlay { [BepInPlugin("blacks7ar.DamageOverlay", "DamageOverlay", "1.0.4")] public class Plugin : BaseUnityPlugin { [HarmonyPatch] public static class Patches { private static float _durationTimer; [HarmonyPrefix] [HarmonyPatch(typeof(Hud), "Awake")] public static void Awake_Prefix(Hud __instance) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) __instance.m_damageScreen.sprite = _damageOverlay; Color color = ((Graphic)__instance.m_damageScreen).color; ((Color)(ref color))..ctor(color.r, color.g, color.b, 0f); ((Graphic)__instance.m_damageScreen).color = color; GameObject gameObject; (gameObject = ((Component)__instance.m_damageScreen).gameObject).SetActive(true); _newDamageScreenObject = new GameObject("extraDamageScreen"); _newDamageScreenObject.transform.SetParent(gameObject.transform); _newDamageScreenObject.transform.localPosition = new Vector3(0f, 0f, 0f); _newDamageScreenObject.transform.localScale = ((Component)__instance.m_damageScreen).gameObject.transform.localScale; _newDamageScreenObject.layer = 5; RectTransform obj = _newDamageScreenObject.AddComponent<RectTransform>(); ((Transform)obj).localPosition = new Vector3(0f, 0f, 0f); obj.anchorMin = new Vector2(0f, 0f); obj.anchorMax = new Vector2(1f, 1f); obj.pivot = new Vector2(0.5f, 0.5f); ((Transform)obj).localScale = new Vector3(1f, 1f, 1f); _newDamageScreenObject.AddComponent<CanvasRenderer>().cullTransparentMesh = false; _newDamageScreen = _newDamageScreenObject.AddComponent<Image>(); ((Graphic)_newDamageScreen).color = new Color(255f, 0f, 0f, 0f); ((Component)_newDamageScreen).gameObject.SetActive(true); } [HarmonyPrefix] [HarmonyPatch(typeof(Hud), "DamageFlash")] public static void DamageFlash_Prefix(Hud __instance) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_004d: 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_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) _durationTimer = 0f; Color color = ((Graphic)__instance.m_damageScreen).color; Color color2 = ((Graphic)_newDamageScreen).color; ((Color)(ref color))..ctor(color.r, color.g, color.b, 1f); ((Graphic)__instance.m_damageScreen).color = color; ((Color)(ref color2))..ctor(color2.r, color2.g, color2.b, 0.1f); ((Graphic)_newDamageScreen).color = color2; ((Component)__instance.m_damageScreen).gameObject.SetActive(true); ((Component)_newDamageScreen).gameObject.SetActive(true); } [HarmonyPrefix] [HarmonyPatch(typeof(Hud), "UpdateDamageFlash")] public static void UpdateDamageFlash_Prefix(Hud __instance, float dt) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00f4: 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) if ((Object)(object)Player.m_localPlayer == (Object)null) { return; } Color color = ((Graphic)__instance.m_damageScreen).color; Color color2 = ((Graphic)_newDamageScreen).color; if (!(((Graphic)__instance.m_damageScreen).color.a > 0f)) { return; } if ((double)((Character)Player.m_localPlayer).GetHealthPercentage() < 0.2) { ((Color)(ref color))..ctor(color.r, color.g, color.b, 1f); ((Graphic)__instance.m_damageScreen).color = color; ((Component)__instance.m_damageScreen).gameObject.SetActive(true); } _durationTimer += dt; if (_durationTimer > 10f) { color.a = Mathf.MoveTowards(color.a, 0f, dt * 0.05f); ((Graphic)__instance.m_damageScreen).color = color; color2.a = Mathf.MoveTowards(color2.a, 0f, dt * 4f); ((Graphic)_newDamageScreen).color = color2; if (((Graphic)_newDamageScreen).color.a <= 0f) { ((Component)_newDamageScreen).gameObject.SetActive(false); } } } } private const string modGUID = "blacks7ar.DamageOverlay"; public const string modName = "DamageOverlay"; public const string modAuthor = "blacks7ar"; public const string modVersion = "1.0.4"; public const string modLink = "https://valheim.thunderstore.io/package/blacks7ar/DamageOverlay/"; private static readonly Harmony _harmony = new Harmony("blacks7ar.DamageOverlay"); private static AssetBundle _overlayBundle; private static Sprite _damageOverlay; private static GameObject _newDamageScreenObject; private static Image _newDamageScreen; public void Awake() { _overlayBundle = GetAssetBundleFromResources("overlaybundle"); _damageOverlay = _overlayBundle.LoadAsset<Sprite>("Assets/CustomAssets/damageoverlay.png"); Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); } private static AssetBundle GetAssetBundleFromResources(string filename) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = executingAssembly.GetManifestResourceNames().Single((string x) => x.EndsWith(filename)); using Stream stream = executingAssembly.GetManifestResourceStream(name); return AssetBundle.LoadFromStream(stream); } } }