summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/AutoRevive.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-20 22:36:58 +0800
committerchai <215380520@qq.com>2024-05-20 22:36:58 +0800
commita22c505984697881f5f911a165ee022087b69e09 (patch)
treed3c030aef1ae9b8a01c889dd2902bb1e3324e72b /Thronefall_v1.0/Decompile/AutoRevive.cs
parent4a4cc82d069b26bc4d4532e73860f86b211ca239 (diff)
*renameHEADmaster
Diffstat (limited to 'Thronefall_v1.0/Decompile/AutoRevive.cs')
-rw-r--r--Thronefall_v1.0/Decompile/AutoRevive.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/AutoRevive.cs b/Thronefall_v1.0/Decompile/AutoRevive.cs
new file mode 100644
index 0000000..63c2d75
--- /dev/null
+++ b/Thronefall_v1.0/Decompile/AutoRevive.cs
@@ -0,0 +1,91 @@
+using UnityEngine;
+using UnityEngine.Events;
+
+[RequireComponent(typeof(Hp))]
+public class AutoRevive : MonoBehaviour, DayNightCycle.IDaytimeSensitive
+{
+ [HideInInspector]
+ public UnityEvent onReviveTrigger = new UnityEvent();
+
+ private Hp hp;
+
+ public float reviveAfterBeingKnockedOutFor = 20f;
+
+ private float hasBeenKnockedOutFor;
+
+ private bool ringOfResurection;
+
+ private bool quickReviveAvailable = true;
+
+ private bool godOfDeathActive;
+
+ [SerializeField]
+ private Equippable ringOfResurectionPerk;
+
+ private float ReviveAfterBeingKnockedOutFor
+ {
+ get
+ {
+ if (ringOfResurection && quickReviveAvailable)
+ {
+ return 2f;
+ }
+ return reviveAfterBeingKnockedOutFor;
+ }
+ }
+
+ public float TimeTillRevive
+ {
+ get
+ {
+ if (hasBeenKnockedOutFor <= 0f)
+ {
+ return -1f;
+ }
+ return ReviveAfterBeingKnockedOutFor - hasBeenKnockedOutFor;
+ }
+ }
+
+ public void OnDusk()
+ {
+ }
+
+ public void OnDawn_AfterSunrise()
+ {
+ quickReviveAvailable = true;
+ }
+
+ public void OnDawn_BeforeSunrise()
+ {
+ }
+
+ private void Start()
+ {
+ godOfDeathActive = PerkManager.instance.GodOfDeathActive;
+ if (godOfDeathActive)
+ {
+ reviveAfterBeingKnockedOutFor *= PerkManager.instance.godOfDeath_playerRespawnMultiplyer;
+ }
+ hp = GetComponent<Hp>();
+ ringOfResurection = PerkManager.IsEquipped(ringOfResurectionPerk);
+ DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this);
+ }
+
+ private void Update()
+ {
+ if (hp.KnockedOut)
+ {
+ hasBeenKnockedOutFor += Time.deltaTime;
+ if (hasBeenKnockedOutFor >= ReviveAfterBeingKnockedOutFor)
+ {
+ hp.Revive();
+ onReviveTrigger.Invoke();
+ quickReviveAvailable = false;
+ }
+ }
+ else
+ {
+ hasBeenKnockedOutFor = 0f;
+ }
+ }
+}