using System; using System.Collections.Generic; using UnityEngine; namespace Colosseum.Skills { /// /// 젬 효과가 발동될 애니메이션 이벤트 인덱스와 효과 목록입니다. /// [Serializable] public class SkillGemTriggeredEffectEntry { [Tooltip("OnEffect(index)와 매칭되는 애니메이션 이벤트 인덱스")] [Min(0)] [SerializeField] private int triggerIndex = 0; [Tooltip("해당 인덱스에서 함께 실행할 추가 효과")] [SerializeField] private List effects = new(); public int TriggerIndex => triggerIndex; public IReadOnlyList Effects => effects; } /// /// 스킬의 기반 효과 위에 추가 동작을 덧붙이는 젬 데이터입니다. /// [CreateAssetMenu(fileName = "NewSkillGem", menuName = "Colosseum/Skill Gem")] public class SkillGemData : ScriptableObject { [Header("기본 정보")] [SerializeField] private string gemName; [TextArea(2, 4)] [SerializeField] private string description; [SerializeField] private Sprite icon; [Header("기본 수치 보정")] [Tooltip("장착 시 마나 비용 배율")] [Min(0f)] [SerializeField] private float manaCostMultiplier = 1f; [Tooltip("장착 시 쿨타임 배율")] [Min(0f)] [SerializeField] private float cooldownMultiplier = 1f; [Header("추가 효과")] [Tooltip("시전 시작 시 즉시 발동하는 추가 효과")] [SerializeField] private List castStartEffects = new(); [Tooltip("애니메이션 이벤트 인덱스별로 발동하는 추가 효과")] [SerializeField] private List triggeredEffects = new(); public string GemName => gemName; public string Description => description; public Sprite Icon => icon; public float ManaCostMultiplier => manaCostMultiplier; public float CooldownMultiplier => cooldownMultiplier; public IReadOnlyList CastStartEffects => castStartEffects; public IReadOnlyList TriggeredEffects => triggeredEffects; } }