using Unity.BossRoom.Gameplay.GameplayObjects.Character;
using UnityEngine;

public abstract class Ability : ScriptableObject
{
    public string abilityKey;
    public string abilityName;

    [Header("Common Ability Settings")]
    public float abilityRadius;
    public float abilityMagnitude;
    public float abilityDuration;
    public float abilityCooldownTime;
    public float abilityApplicationRadius;
    [Header("Ability Prefab")]
    public GameObject prefab;

    /// <summary>
    /// Executes the ability's specific behavior.
    /// </summary>
    public abstract void Execute(ServerCharacter character, Vector3 targetPosition, Vector3 targetRotation);

    /// <summary>
    /// Retrieves the prefab associated with this ability.
    /// </summary>
    public GameObject GetPrefab()
    {
        return prefab;
    }
}