2026-05-09 09:31:38 +00:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace EerieVillage.Skills
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 액티브 스킬 ScriptableObject 데이터.
|
|
|
|
|
|
/// BT12-Dev v1 §2-2 정합. ActiveCategory 6종·ActiveTrigger 3종.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[CreateAssetMenu(fileName = "Active_", menuName = "EerieVillage/Skills/Active")]
|
|
|
|
|
|
public class ActiveSkillData : SkillDataAsset
|
|
|
|
|
|
{
|
|
|
|
|
|
[Header("액티브 전용")]
|
|
|
|
|
|
/// <summary>카테고리 (A~F) — Projectile·MeleeArea·PlacementPersistent·Minion·Debuff·SpecialJudge</summary>
|
|
|
|
|
|
public ActiveCategory Category;
|
|
|
|
|
|
/// <summary>발동 트리거 — OnTime·OnHit·OnKill</summary>
|
|
|
|
|
|
public ActiveTrigger Trigger;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("Lv.1 기본 쿨다운 (초). balance/01 v0.2 BaseCooldown 1.5s 참조")]
|
|
|
|
|
|
public float BaseCooldown = 1.5f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("Lv.1 기본 대미지 (쿼터 단위). balance/01 v0.2 BaseDamage 10 참조")]
|
|
|
|
|
|
public int BaseDamage = 10;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("판정 박스 기본 크기 (A·B 카테고리). balance/01 v0.2 AttackBoxSize 1.5x1.0 참조")]
|
|
|
|
|
|
public Vector2 HitboxSize = new Vector2(1.5f, 1.0f);
|
|
|
|
|
|
|
2026-05-13 09:05:13 +00:00
|
|
|
|
[Tooltip("히트박스 위치 오프셋 (anchor 기준 X·Y 절대). 투사체 영역 X=facing 방향 거리·Y=직각 거리")]
|
|
|
|
|
|
public Vector2 OffsetDistance = new Vector2(0.5f, 0f);
|
2026-05-09 09:31:38 +00:00
|
|
|
|
|
|
|
|
|
|
[Tooltip("투사체 전용 (A 카테고리). 궤적 타입 — Line·Homing·Arc")]
|
|
|
|
|
|
public ProjectileTrajectory Trajectory = ProjectileTrajectory.Line;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("소환 전용 (D 카테고리). 소환물 프리팹 참조")]
|
|
|
|
|
|
public GameObject MinionPrefab;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("연쇄 타격 횟수 (Homing 등 연쇄 계열)")]
|
|
|
|
|
|
public int ChainCount = 0;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("DoT 지속 시간 (초)")]
|
|
|
|
|
|
public float DotDuration = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("DoT 타격 간격 (초)")]
|
|
|
|
|
|
public float DotInterval = 0.5f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("기절 지속 시간 (초)")]
|
|
|
|
|
|
public float StunDuration = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("감속 지속 시간 (초)")]
|
|
|
|
|
|
public float SlowDuration = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("감속 배율 (0.5 = 50% 감속)")]
|
|
|
|
|
|
[Range(0f, 1f)]
|
|
|
|
|
|
public float SlowMultiplier = 0.5f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("넉백 힘")]
|
|
|
|
|
|
public float KnockbackForce = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("동시 최대 인스턴스 수 (C·D 카테고리)")]
|
|
|
|
|
|
public int MaxConcurrent = 1;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("소환물 수명 (초, D 카테고리)")]
|
|
|
|
|
|
public float MinionLifetime = 10f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("오라 주기 (초, E 카테고리 아우라형)")]
|
|
|
|
|
|
public float AuraTickInterval = 0.5f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("오라 반경 (E 카테고리 아우라형)")]
|
|
|
|
|
|
public float AuraRadius = 3f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("크리티컬 대미지 배율")]
|
|
|
|
|
|
public float CritDamageMultiplier = 2.0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("무적 프레임 부여 시간 (초, F 카테고리)")]
|
|
|
|
|
|
public float IFrameDuration = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("상태이상 스택 한도 (E 카테고리)")]
|
|
|
|
|
|
public int DebuffStackLimit = 3;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("확률 판정 전용 (F 카테고리). 발동 확률 0~1")]
|
|
|
|
|
|
[Range(0f, 1f)]
|
|
|
|
|
|
public float FireProbability = 1.0f;
|
2026-05-10 07:56:20 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>BT12-Dev 2026-05-10 PD — 사정거리 5단계 (Camera width 배수)</summary>
|
|
|
|
|
|
[Tooltip("사정거리 5단계 — Camera 가로 배수 (Short 0.2·MediumShort 0.5·Medium 0.667·MediumLong 1.0·Long 1.5)")]
|
|
|
|
|
|
public RangeTier Range = RangeTier.Medium;
|
2026-05-12 16:48:30 +00:00
|
|
|
|
|
|
|
|
|
|
// BT12-Dev 2026-05-13 — 스킬 이펙트 prefab 3 + DoT damage multiplier (PD 지시: A02 파이어볼 이펙트 구현)
|
|
|
|
|
|
[Header("스킬 이펙트 (Phase 2-E)")]
|
|
|
|
|
|
[Tooltip("투사체 prefab — 부재 시 Resources/Skills/Projectiles/Default fallback")]
|
|
|
|
|
|
public GameObject ProjectilePrefab;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("적중 시 Instantiate 되는 ParticleSystem prefab (적 위치)")]
|
|
|
|
|
|
public GameObject OnHitFxPrefab;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("DoT 적용 시 적 자식으로 Instantiate 되는 ParticleSystem prefab")]
|
|
|
|
|
|
public GameObject OnDotFxPrefab;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("DoT damage = BaseDamage × DotDamageMultiplier (예: 0.25 = 25%)")]
|
|
|
|
|
|
[Range(0f, 5f)]
|
|
|
|
|
|
public float DotDamageMultiplier = 0.25f;
|
2026-05-13 09:05:13 +00:00
|
|
|
|
|
|
|
|
|
|
// BT12-Dev 2026-05-13 — 이펙트 크기 분리 조절 (PD 지시·옵션 B)
|
|
|
|
|
|
[Header("이펙트 크기 (1.0 = 원본)")]
|
|
|
|
|
|
[Tooltip("ProjectilePrefab 영역 크기 배율 (Projectile·PiercingProjectile 자체)")]
|
|
|
|
|
|
[Range(0f, 5f)]
|
|
|
|
|
|
public float ProjectileFxScale = 1.0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("OnHitFxPrefab 영역 크기 배율 (피격·번개·학익진 FX 등)")]
|
|
|
|
|
|
[Range(0f, 5f)]
|
|
|
|
|
|
public float HitFxScale = 1.0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("OnDotFxPrefab 영역 크기 배율 (불태우기 등 DoT FX)")]
|
|
|
|
|
|
[Range(0f, 5f)]
|
|
|
|
|
|
public float DotFxScale = 1.0f;
|
|
|
|
|
|
|
|
|
|
|
|
// PD 지시 2026-05-13 — 이펙트 회전·위치 X·Y 조정 (옵션 A — 단일 필드)
|
|
|
|
|
|
[Tooltip("이펙트 회전 각도 (도 단위·Z 축 회전). 모든 FX·시각화 박스 공통 적용")]
|
|
|
|
|
|
[Range(-360f, 360f)]
|
|
|
|
|
|
public float FxRotation = 0f;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("이펙트 위치 X·Y 오프셋 (이펙트 전용). 모든 스킬 공통 적용")]
|
|
|
|
|
|
public Vector2 OffsetXY = Vector2.zero;
|
|
|
|
|
|
|
|
|
|
|
|
// PD 지시 2026-05-13 — 판정 발생 정밀 제어 (투사체 제외 고정 발동형: A04·A05·A_Laser 등)
|
|
|
|
|
|
[Header("판정 타이밍 (고정 발동형 전용)")]
|
|
|
|
|
|
[Tooltip("Trigger 시점 영역 첫 판정 프레임 (예: 25 = Trigger 후 25프레임 후 첫 hit)")]
|
|
|
|
|
|
[Min(0)]
|
|
|
|
|
|
public int DamageFrameDelay = 0;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("반복 피해 활성 — false 영역 1회만·true 영역 MaxHitCount 회 영역 RepeatFrameInterval 간격")]
|
|
|
|
|
|
public bool EnableRepeatDamage = false;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("최대 타격 횟수 (EnableRepeatDamage=true 시)")]
|
|
|
|
|
|
[Min(1)]
|
|
|
|
|
|
public int MaxHitCount = 1;
|
|
|
|
|
|
|
|
|
|
|
|
[Tooltip("반복 피해 간격 (프레임 단위·EnableRepeatDamage=true 시)")]
|
|
|
|
|
|
[Min(1)]
|
|
|
|
|
|
public int RepeatFrameInterval = 30;
|
2026-05-09 09:31:38 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-10 07:56:20 +00:00
|
|
|
|
public enum RangeTier { Short, MediumShort, Medium, MediumLong, Long }
|
|
|
|
|
|
|
2026-05-09 09:31:38 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 액티브 스킬 카테고리 (A~F). BT12-Dev v1 §2-2 정합.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public enum ActiveCategory
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>A. 투사체</summary>
|
|
|
|
|
|
Projectile,
|
|
|
|
|
|
/// <summary>B. 근접·범위</summary>
|
|
|
|
|
|
MeleeArea,
|
|
|
|
|
|
/// <summary>C. 설치·지속</summary>
|
|
|
|
|
|
PlacementPersistent,
|
|
|
|
|
|
/// <summary>D. 소환</summary>
|
|
|
|
|
|
Minion,
|
|
|
|
|
|
/// <summary>E. 상태이상</summary>
|
|
|
|
|
|
Debuff,
|
|
|
|
|
|
/// <summary>F. 특수 판정</summary>
|
|
|
|
|
|
SpecialJudge
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 투사체 궤적 타입. BT12-Dev v1 §2-2 정합.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public enum ProjectileTrajectory
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>직선</summary>
|
|
|
|
|
|
Line,
|
|
|
|
|
|
/// <summary>유도</summary>
|
|
|
|
|
|
Homing,
|
|
|
|
|
|
/// <summary>곡선</summary>
|
|
|
|
|
|
Arc
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|