new-horizons/NewHorizons/Handlers/InvulnerabilityHandler.cs

37 lines
1.2 KiB
C#

using NewHorizons.Utility.OWML;
using UnityEngine;
namespace NewHorizons.Handlers
{
internal class InvulnerabilityHandler
{
private static float _defaultImpactDeathSpeed = -1f;
public static void MakeInvulnerable(bool invulnerable)
{
NHLogger.Log($"Toggling immortality: {invulnerable}");
var deathManager = GetDeathManager();
var resources = GetPlayerResouces();
if (invulnerable)
{
if (_defaultImpactDeathSpeed == -1f)
_defaultImpactDeathSpeed = deathManager._impactDeathSpeed;
deathManager._impactDeathSpeed = Mathf.Infinity;
deathManager._invincible = true;
}
else
{
deathManager._impactDeathSpeed = _defaultImpactDeathSpeed;
resources._currentHealth = 100f;
deathManager._invincible = false;
}
}
private static DeathManager GetDeathManager() => GameObject.FindObjectOfType<DeathManager>();
private static PlayerResources GetPlayerResouces() => GameObject.FindObjectOfType<PlayerResources>();
}
}