EerieVillage/Assets/Scripts/Skills/Data/ActiveSkillData.cs

176 lines
6.8 KiB
C#
Raw Normal View History

docs(BT12-Dev Phase 2-A): Skills 13 파일 신규 (인터페이스·SO·중앙 컴포넌트) C49 Phase 2 (집행) — Sonnet 위임 결과·Phase 1 dev-team-lead 재분석 보고서 정합. 신설 13 파일 (Assets/Scripts/Skills/): - Interfaces/ (4): ISkillRuntime, IActiveSkill, IPassiveSkill, IAwakeningSkill (+ ActiveTrigger·PassiveTriggerKind·AwakeningPattern enum) - Data/ (4): SkillDataAsset (abstract·AttributeTag·TypeTag), ActiveSkillData (Category 6종·14 신규 필드), PassiveSkillData (StatType·stub), AwakeningSkillData (stub) - Runtime/ (4): PlayerStats (POCO·AttributeTag Dictionary), ActiveSkillRuntime (Tick·Fire·EffectiveCooldown 하드캡 0.5s·StackLevelFactor), PlayerSkillInventory ([RequireComponent(Health)]·OnDamagedEvent 구독·NotifyEnemyKilled), SkillRuntimeFactory (Resolve·Create·stub 2종) - Events/ (1): SkillFireEvent (Simulation.Event<T>·Execute stub·카테고리 분기 6종 주석) 설계서 정합: - §2-1 인터페이스 계약 (ISkillRuntime → IActiveSkill·IPassiveSkill·IAwakeningSkill) - §2-2 ScriptableObject 계약 (ActiveCategory 6종·CreateAssetMenu 3종) - §2-3 PlayerStats POCO·AttributeTag 키 Dictionary - §3-2 CSV 매핑 테이블·§3-3 Resolve+Create 분기 - §4-2 EffectiveCooldown = BaseCooldown × CooldownMultiplier ÷ StackLevelFactor·하드캡 0.5s - §4-4 OnHit·OnKill 이벤트 핸들러 PlayerSkillInventory 구현 설계서 대비 조정 3건 (Sonnet 자체 정합): 1. IPassiveSkill.ApplyTo → ApplyModifier·RemoveModifier (설계서 §2-1 명세 정합) 2. AddSkillByCardId 반환 void → bool (실패 감지) 3. EnemyKillContext struct 신설 (Phase 2-D 정식 통합 전 decoupling) Phase 2-B 준비: - SkillFireEvent.Execute stub 영역 카테고리 분기 6종 주석 - Phase 2-B 투사체 진입 시 ProjectileSpawner·AttackHitbox 연결 지점 명확 기존 파일 영역 변경 X (BT12-MVP-A·BT5-Dev·BT7-Dev 미변경) 회귀 위험 = 매우 낮음 (신규 파일만) C50 분량 (PD 사전 승인 80~120K) — 실제 ~73K (정합) PD 결정 (b 5분할·b-1 카테고리 6분할·우선 투사체) 사전 승인 정합 pm-auditor 사전 감사 = Pass 4 + Minor 1 + Major 1 - Major 1 정정 영역 = git add 명시 path 한정 (Skills 디렉토리만·Screenshots·_Recovery 미포함) ✅ - Minor 1 후속 영역 = PD Editor Refresh 후 read_console 본 PM 직접 실측 untracked 영역 별도 안건: - Assets/Screenshots/ (manage_camera screenshot 영역·.gitignore 검토 영역) - Assets/_Recovery/ (Unity 자동 복구 파일·.gitignore 검토 영역)
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);
feat(BT12-Dev): 스킬 시스템 누적 작업물 (PD 지시 2026-05-12~13) 본 세션 (BurningTimes worktree cranky-wescoff-e855b0) 누적 작업물. 직전 commit 4건 (2ebf313·60e28e3·ea7d32f·f6c6eb5) 영역 외 잔존 미커밋 변경 일괄 commit. Scripts: - Health.cs DecrementBypassInvuln (DoT) + DecrementBypassInvulnWithHit (다단 히트) + StartHitFlash + FlashHurtCoroutine + TriggerHitOrHurt - ActiveSkillData.cs 신규 필드 (DamageFrameDelay·EnableRepeatDamage· MaxHitCount·RepeatFrameInterval·OffsetDistance Vector2 등) - PiercingProjectile.cs A13 천둥발 관통 + Kinematic Rigidbody2D + useFullKinematicContacts + OverlapBox 매 frame - StatusApplier.cs ApplyDoT 시 DotFxScale 전달 - TestSkillFireOn1to5.cs 1~5 키 발사 + lazy init EnsureRuntimes Animator: - Enemy.controller Baddie-Hurt self-loop transition (hurt 조건) - Player.controller Player-Hit self-loop transition (hit 조건) Prefab: - FX_Lightningball.prefab ball 자식 PS simulationSpace World → Local - Enemy.prefab 본 세션 측정 조정 Active skill assets (PD Inspector 직접 조정): - A01·A02·A03·A04·A05·A08·A13·A14·A15·A_Laser HitboxSize·OffsetDistance(Vector2)·OffsetXY·FxRotation·HitFxScale· DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval Font: - NotoSansKR-Regular SDF.asset 본 세션 SDF atlas 갱신 → 박스↔이펙트 분리 원칙 표준화 (박스 = facing 만 · 이펙트 = facing + FxRotation · runtime spawn = HideFlags.DontSave) → 모든 피해 시 hit flash + Animator self-loop transition Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:05:13 +00:00
[Tooltip("히트박스 위치 오프셋 (anchor 기준 X·Y 절대). 투사체 영역 X=facing 방향 거리·Y=직각 거리")]
public Vector2 OffsetDistance = new Vector2(0.5f, 0f);
docs(BT12-Dev Phase 2-A): Skills 13 파일 신규 (인터페이스·SO·중앙 컴포넌트) C49 Phase 2 (집행) — Sonnet 위임 결과·Phase 1 dev-team-lead 재분석 보고서 정합. 신설 13 파일 (Assets/Scripts/Skills/): - Interfaces/ (4): ISkillRuntime, IActiveSkill, IPassiveSkill, IAwakeningSkill (+ ActiveTrigger·PassiveTriggerKind·AwakeningPattern enum) - Data/ (4): SkillDataAsset (abstract·AttributeTag·TypeTag), ActiveSkillData (Category 6종·14 신규 필드), PassiveSkillData (StatType·stub), AwakeningSkillData (stub) - Runtime/ (4): PlayerStats (POCO·AttributeTag Dictionary), ActiveSkillRuntime (Tick·Fire·EffectiveCooldown 하드캡 0.5s·StackLevelFactor), PlayerSkillInventory ([RequireComponent(Health)]·OnDamagedEvent 구독·NotifyEnemyKilled), SkillRuntimeFactory (Resolve·Create·stub 2종) - Events/ (1): SkillFireEvent (Simulation.Event<T>·Execute stub·카테고리 분기 6종 주석) 설계서 정합: - §2-1 인터페이스 계약 (ISkillRuntime → IActiveSkill·IPassiveSkill·IAwakeningSkill) - §2-2 ScriptableObject 계약 (ActiveCategory 6종·CreateAssetMenu 3종) - §2-3 PlayerStats POCO·AttributeTag 키 Dictionary - §3-2 CSV 매핑 테이블·§3-3 Resolve+Create 분기 - §4-2 EffectiveCooldown = BaseCooldown × CooldownMultiplier ÷ StackLevelFactor·하드캡 0.5s - §4-4 OnHit·OnKill 이벤트 핸들러 PlayerSkillInventory 구현 설계서 대비 조정 3건 (Sonnet 자체 정합): 1. IPassiveSkill.ApplyTo → ApplyModifier·RemoveModifier (설계서 §2-1 명세 정합) 2. AddSkillByCardId 반환 void → bool (실패 감지) 3. EnemyKillContext struct 신설 (Phase 2-D 정식 통합 전 decoupling) Phase 2-B 준비: - SkillFireEvent.Execute stub 영역 카테고리 분기 6종 주석 - Phase 2-B 투사체 진입 시 ProjectileSpawner·AttackHitbox 연결 지점 명확 기존 파일 영역 변경 X (BT12-MVP-A·BT5-Dev·BT7-Dev 미변경) 회귀 위험 = 매우 낮음 (신규 파일만) C50 분량 (PD 사전 승인 80~120K) — 실제 ~73K (정합) PD 결정 (b 5분할·b-1 카테고리 6분할·우선 투사체) 사전 승인 정합 pm-auditor 사전 감사 = Pass 4 + Minor 1 + Major 1 - Major 1 정정 영역 = git add 명시 path 한정 (Skills 디렉토리만·Screenshots·_Recovery 미포함) ✅ - Minor 1 후속 영역 = PD Editor Refresh 후 read_console 본 PM 직접 실측 untracked 영역 별도 안건: - Assets/Screenshots/ (manage_camera screenshot 영역·.gitignore 검토 영역) - Assets/_Recovery/ (Unity 자동 복구 파일·.gitignore 검토 영역)
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;
/// <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;
// 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;
feat(BT12-Dev): 스킬 시스템 누적 작업물 (PD 지시 2026-05-12~13) 본 세션 (BurningTimes worktree cranky-wescoff-e855b0) 누적 작업물. 직전 commit 4건 (2ebf313·60e28e3·ea7d32f·f6c6eb5) 영역 외 잔존 미커밋 변경 일괄 commit. Scripts: - Health.cs DecrementBypassInvuln (DoT) + DecrementBypassInvulnWithHit (다단 히트) + StartHitFlash + FlashHurtCoroutine + TriggerHitOrHurt - ActiveSkillData.cs 신규 필드 (DamageFrameDelay·EnableRepeatDamage· MaxHitCount·RepeatFrameInterval·OffsetDistance Vector2 등) - PiercingProjectile.cs A13 천둥발 관통 + Kinematic Rigidbody2D + useFullKinematicContacts + OverlapBox 매 frame - StatusApplier.cs ApplyDoT 시 DotFxScale 전달 - TestSkillFireOn1to5.cs 1~5 키 발사 + lazy init EnsureRuntimes Animator: - Enemy.controller Baddie-Hurt self-loop transition (hurt 조건) - Player.controller Player-Hit self-loop transition (hit 조건) Prefab: - FX_Lightningball.prefab ball 자식 PS simulationSpace World → Local - Enemy.prefab 본 세션 측정 조정 Active skill assets (PD Inspector 직접 조정): - A01·A02·A03·A04·A05·A08·A13·A14·A15·A_Laser HitboxSize·OffsetDistance(Vector2)·OffsetXY·FxRotation·HitFxScale· DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval Font: - NotoSansKR-Regular SDF.asset 본 세션 SDF atlas 갱신 → 박스↔이펙트 분리 원칙 표준화 (박스 = facing 만 · 이펙트 = facing + FxRotation · runtime spawn = HideFlags.DontSave) → 모든 피해 시 hit flash + Animator self-loop transition Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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;
docs(BT12-Dev Phase 2-A): Skills 13 파일 신규 (인터페이스·SO·중앙 컴포넌트) C49 Phase 2 (집행) — Sonnet 위임 결과·Phase 1 dev-team-lead 재분석 보고서 정합. 신설 13 파일 (Assets/Scripts/Skills/): - Interfaces/ (4): ISkillRuntime, IActiveSkill, IPassiveSkill, IAwakeningSkill (+ ActiveTrigger·PassiveTriggerKind·AwakeningPattern enum) - Data/ (4): SkillDataAsset (abstract·AttributeTag·TypeTag), ActiveSkillData (Category 6종·14 신규 필드), PassiveSkillData (StatType·stub), AwakeningSkillData (stub) - Runtime/ (4): PlayerStats (POCO·AttributeTag Dictionary), ActiveSkillRuntime (Tick·Fire·EffectiveCooldown 하드캡 0.5s·StackLevelFactor), PlayerSkillInventory ([RequireComponent(Health)]·OnDamagedEvent 구독·NotifyEnemyKilled), SkillRuntimeFactory (Resolve·Create·stub 2종) - Events/ (1): SkillFireEvent (Simulation.Event<T>·Execute stub·카테고리 분기 6종 주석) 설계서 정합: - §2-1 인터페이스 계약 (ISkillRuntime → IActiveSkill·IPassiveSkill·IAwakeningSkill) - §2-2 ScriptableObject 계약 (ActiveCategory 6종·CreateAssetMenu 3종) - §2-3 PlayerStats POCO·AttributeTag 키 Dictionary - §3-2 CSV 매핑 테이블·§3-3 Resolve+Create 분기 - §4-2 EffectiveCooldown = BaseCooldown × CooldownMultiplier ÷ StackLevelFactor·하드캡 0.5s - §4-4 OnHit·OnKill 이벤트 핸들러 PlayerSkillInventory 구현 설계서 대비 조정 3건 (Sonnet 자체 정합): 1. IPassiveSkill.ApplyTo → ApplyModifier·RemoveModifier (설계서 §2-1 명세 정합) 2. AddSkillByCardId 반환 void → bool (실패 감지) 3. EnemyKillContext struct 신설 (Phase 2-D 정식 통합 전 decoupling) Phase 2-B 준비: - SkillFireEvent.Execute stub 영역 카테고리 분기 6종 주석 - Phase 2-B 투사체 진입 시 ProjectileSpawner·AttackHitbox 연결 지점 명확 기존 파일 영역 변경 X (BT12-MVP-A·BT5-Dev·BT7-Dev 미변경) 회귀 위험 = 매우 낮음 (신규 파일만) C50 분량 (PD 사전 승인 80~120K) — 실제 ~73K (정합) PD 결정 (b 5분할·b-1 카테고리 6분할·우선 투사체) 사전 승인 정합 pm-auditor 사전 감사 = Pass 4 + Minor 1 + Major 1 - Major 1 정정 영역 = git add 명시 path 한정 (Skills 디렉토리만·Screenshots·_Recovery 미포함) ✅ - Minor 1 후속 영역 = PD Editor Refresh 후 read_console 본 PM 직접 실측 untracked 영역 별도 안건: - Assets/Screenshots/ (manage_camera screenshot 영역·.gitignore 검토 영역) - Assets/_Recovery/ (Unity 자동 복구 파일·.gitignore 검토 영역)
2026-05-09 09:31:38 +00:00
}
public enum RangeTier { Short, MediumShort, Medium, MediumLong, Long }
docs(BT12-Dev Phase 2-A): Skills 13 파일 신규 (인터페이스·SO·중앙 컴포넌트) C49 Phase 2 (집행) — Sonnet 위임 결과·Phase 1 dev-team-lead 재분석 보고서 정합. 신설 13 파일 (Assets/Scripts/Skills/): - Interfaces/ (4): ISkillRuntime, IActiveSkill, IPassiveSkill, IAwakeningSkill (+ ActiveTrigger·PassiveTriggerKind·AwakeningPattern enum) - Data/ (4): SkillDataAsset (abstract·AttributeTag·TypeTag), ActiveSkillData (Category 6종·14 신규 필드), PassiveSkillData (StatType·stub), AwakeningSkillData (stub) - Runtime/ (4): PlayerStats (POCO·AttributeTag Dictionary), ActiveSkillRuntime (Tick·Fire·EffectiveCooldown 하드캡 0.5s·StackLevelFactor), PlayerSkillInventory ([RequireComponent(Health)]·OnDamagedEvent 구독·NotifyEnemyKilled), SkillRuntimeFactory (Resolve·Create·stub 2종) - Events/ (1): SkillFireEvent (Simulation.Event<T>·Execute stub·카테고리 분기 6종 주석) 설계서 정합: - §2-1 인터페이스 계약 (ISkillRuntime → IActiveSkill·IPassiveSkill·IAwakeningSkill) - §2-2 ScriptableObject 계약 (ActiveCategory 6종·CreateAssetMenu 3종) - §2-3 PlayerStats POCO·AttributeTag 키 Dictionary - §3-2 CSV 매핑 테이블·§3-3 Resolve+Create 분기 - §4-2 EffectiveCooldown = BaseCooldown × CooldownMultiplier ÷ StackLevelFactor·하드캡 0.5s - §4-4 OnHit·OnKill 이벤트 핸들러 PlayerSkillInventory 구현 설계서 대비 조정 3건 (Sonnet 자체 정합): 1. IPassiveSkill.ApplyTo → ApplyModifier·RemoveModifier (설계서 §2-1 명세 정합) 2. AddSkillByCardId 반환 void → bool (실패 감지) 3. EnemyKillContext struct 신설 (Phase 2-D 정식 통합 전 decoupling) Phase 2-B 준비: - SkillFireEvent.Execute stub 영역 카테고리 분기 6종 주석 - Phase 2-B 투사체 진입 시 ProjectileSpawner·AttackHitbox 연결 지점 명확 기존 파일 영역 변경 X (BT12-MVP-A·BT5-Dev·BT7-Dev 미변경) 회귀 위험 = 매우 낮음 (신규 파일만) C50 분량 (PD 사전 승인 80~120K) — 실제 ~73K (정합) PD 결정 (b 5분할·b-1 카테고리 6분할·우선 투사체) 사전 승인 정합 pm-auditor 사전 감사 = Pass 4 + Minor 1 + Major 1 - Major 1 정정 영역 = git add 명시 path 한정 (Skills 디렉토리만·Screenshots·_Recovery 미포함) ✅ - Minor 1 후속 영역 = PD Editor Refresh 후 read_console 본 PM 직접 실측 untracked 영역 별도 안건: - Assets/Screenshots/ (manage_camera screenshot 영역·.gitignore 검토 영역) - Assets/_Recovery/ (Unity 자동 복구 파일·.gitignore 검토 영역)
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
}
}