21 lines
541 B
C#

using UnityEngine;
public abstract class Ability : ScriptableObject
{
[Header("Meta")]
public string displayName = "Ability";
public string key = "";
public Sprite icon;
[Header("Cost & Cooldown")]
public float manaCost = 10f;
public float cooldown = 2f;
[TextArea] public string description;
// Called after cost/cooldown checks pass
public abstract void Activate(AbilityUser user);
// Optional pre-checks (override if needed)
public virtual bool CanActivate(AbilityUser user) => true;
}