magic powers refactor WIP
This commit is contained in:
64
Assets/Scripts/Characters/Skills/SilentPeekSpell.cs
Normal file
64
Assets/Scripts/Characters/Skills/SilentPeekSpell.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Beyond
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Magic/Spells/Silent Peek")]
|
||||
public class SilentPeekSpell : SpellDefinition
|
||||
{
|
||||
[Header("Timing")]
|
||||
[Tooltip("Time to wait before toggling (Matches old 'Start Time')")]
|
||||
public float startDelay = 0.85f;
|
||||
|
||||
// 1. Logic: Angel Eye makes this spell cost 0 Faith
|
||||
public override float GetFaithCost(Player player)
|
||||
{
|
||||
if (player.CurrentTrinketStats.effectAngelEye)
|
||||
{
|
||||
return 0f;
|
||||
}
|
||||
return base.GetFaithCost(player);
|
||||
}
|
||||
|
||||
public override void Cast(MagicAttacks caster, Transform target)
|
||||
{
|
||||
caster.StartCoroutine(CastRoutine(caster));
|
||||
}
|
||||
|
||||
private IEnumerator CastRoutine(MagicAttacks caster)
|
||||
{
|
||||
// 2. Logic: Wait for the animation to reach the point (Start Time)
|
||||
if (startDelay > 0) yield return new WaitForSeconds(startDelay);
|
||||
|
||||
if (SilentPeekController.instance != null)
|
||||
{
|
||||
if (SilentPeekController.instance.IsActive())
|
||||
{
|
||||
// Turn Off
|
||||
SilentPeekController.instance.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Turn On
|
||||
|
||||
// A. Get the Item from the Caster (Requires the helper method added above)
|
||||
bItem spellItem = caster.GetEquippedSpellItem();
|
||||
|
||||
// B. Handle Zora's Focus (Effect Breeze) logic
|
||||
// (Placeholder: Your original code noted this was for future implementation)
|
||||
if (Player.Instance.CurrentTrinketStats.effectBreeze)
|
||||
{
|
||||
// Example: Increase radius or duration here in the future
|
||||
}
|
||||
|
||||
// C. Activate Controller
|
||||
SilentPeekController.instance.SetActive(true, spellItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("SilentPeekSpell: SilentPeekController Instance is null.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user