r2mods/ilspy_dump/ror2_csproj/RoR2/MasterSuicideOnTimer.cs

68 lines
1.3 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using UnityEngine;
using UnityEngine.Networking;
namespace RoR2;
public class MasterSuicideOnTimer : MonoBehaviour
{
public float lifeTimer;
[Tooltip("Reset the timer if we're within this radius of the owner")]
public float timerResetDistanceToOwner;
public MinionOwnership minionOwnership;
private CharacterBody body;
private CharacterBody ownerBody;
private float timer;
private bool hasDied;
private CharacterMaster characterMaster;
private void Start()
{
characterMaster = GetComponent<CharacterMaster>();
if ((bool)minionOwnership && (bool)minionOwnership.ownerMaster)
{
ownerBody = minionOwnership.ownerMaster.GetBody();
}
}
private void FixedUpdate()
{
if (!NetworkServer.active)
{
return;
}
if ((bool)ownerBody)
{
if (!body)
{
body = characterMaster.GetBody();
}
if ((bool)body && (ownerBody.transform.position - body.transform.position).sqrMagnitude < timerResetDistanceToOwner * timerResetDistanceToOwner)
{
timer = 0f;
}
}
timer += Time.fixedDeltaTime;
if (!(timer >= lifeTimer) || hasDied)
{
return;
}
GameObject bodyObject = characterMaster.GetBodyObject();
if ((bool)bodyObject)
{
HealthComponent component = bodyObject.GetComponent<HealthComponent>();
if ((bool)component)
{
component.Suicide();
hasDied = true;
}
}
}
}