using NewHorizons.Utility.OWML; using UnityEngine; using UnityEngine.SceneManagement; namespace NewHorizons.Handlers { internal class InvulnerabilityHandler { /// /// Used in patches /// public static bool Invincible { get; private set; } public static void MakeInvulnerable(bool invulnerable) { NHLogger.Log($"Toggling immortality: {invulnerable}"); Invincible = invulnerable; var deathManager = GetDeathManager(); var resources = GetPlayerResouces(); if (invulnerable) { deathManager._invincible = true; resources._invincible = true; } else { resources._currentHealth = 100f; deathManager._invincible = false; resources._invincible = false; } } private static DeathManager GetDeathManager() => GameObject.FindObjectOfType(); private static PlayerResources GetPlayerResouces() => GameObject.FindObjectOfType(); static InvulnerabilityHandler() { // If the scene unloads when Invincible is on it might not get turned off SceneManager.sceneUnloaded += (_) => Invincible = false; } } }