using UnityEngine; using Colosseum.Stats; using Colosseum.Combat; namespace Colosseum.Skills.Effects { /// /// 치료 효과 /// [CreateAssetMenu(fileName = "HealEffect", menuName = "Colosseum/Skills/Effects/Heal")] public class HealEffect : SkillEffect { [Header("Heal Settings")] [Min(0f)] [SerializeField] private float baseHeal = 10f; [Tooltip("회복력 계수 (1.0 = 100%)")] [Min(0f)] [SerializeField] private float healScaling = 1f; protected override void ApplyEffect(GameObject caster, GameObject target) { if (target == null) return; // 회복량 계산 float totalHeal = CalculateHeal(caster); // 타겟에 회복 적용 (IDamageable 인터페이스 사용) var damageable = target.GetComponent(); if (damageable != null) { float actualHeal = damageable.Heal(totalHeal); CombatBalanceTracker.RecordHeal(caster, target, actualHeal); } } /// /// 시전자 스탯 기반 회복량 계산 /// 공식: baseHeal + (healPower * healScaling) /// private float CalculateHeal(GameObject caster) { var stats = caster.GetComponent(); if (stats == null) { return baseHeal; } return baseHeal + (stats.HealPower * healScaling); } } }