using UnityEngine;

/// <summary>
/// ScriptableObject that holds character-specific data.
/// This allows for data-driven character configuration without modifying prefabs.
/// </summary>
[CreateAssetMenu(fileName = "CharacterStats", menuName = "Deviant/Character Stats")]
public class CharacterStats : ScriptableObject
{
    [Header("Identity")]
    [Tooltip("Internal character name used for prefab loading")]
    public string characterName;
    
    [Tooltip("Display name shown in UI")]
    public string displayName;
    
    [Tooltip("Character description for selection screen")]
    [TextArea(2, 4)]
    public string description;

    [Header("Combat Stats")]
    [Tooltip("Base health points")]
    public float baseHealth = 100f;
    
    [Tooltip("Base movement speed")]
    public float baseSpeed = 5f;
    
    [Tooltip("Base attack damage multiplier")]
    public float attackDamageMultiplier = 1f;
    
    [Tooltip("Defense multiplier (reduces incoming damage)")]
    public float defenseMultiplier = 1f;

    [Header("Movement Stats")]
    [Tooltip("Walk speed")]
    public float walkSpeed = 2f;
    
    [Tooltip("Run speed")]
    public float runSpeed = 5f;
    
    [Tooltip("Rotation speed")]
    public float rotationSpeed = 120f;
    
    [Tooltip("Speed reduction when carrying cash (0.0 - 1.0)")]
    [Range(0f, 1f)]
    public float cashCarrySpeedPenalty = 0.3f;

    [Header("AI Settings")]
    [Tooltip("Preferred combat range")]
    public float preferredCombatRange = 2f;
    
    [Tooltip("Attack frequency (attacks per second)")]
    public float attackFrequency = 1f;
    
    [Tooltip("Aggression level (0 = defensive, 1 = aggressive)")]
    [Range(0f, 1f)]
    public float aggressionLevel = 0.5f;

    [Header("Animation")]
    [Tooltip("Character-specific animator controller (optional override)")]
    public RuntimeAnimatorController animatorController;

    [Header("Visual")]
    [Tooltip("Character icon for UI")]
    public Sprite characterIcon;
    
    [Tooltip("Character portrait for selection screen")]
    public Sprite characterPortrait;
}
