diff options
Diffstat (limited to 'Thronefall_v1.0/Decompile/AutoRevive.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/AutoRevive.cs | 91 |
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; + } + } +} |