using UnityEngine; /// /// ScriptableObject that holds character-specific data. /// This allows for data-driven character configuration without modifying prefabs. /// [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; }