refactor: 스킬 트리거 효과를 그룹 구조로 변경 — 하나의 애니메이션 이벤트로 여러 effect 발동 가능
- SkillGemTriggeredEffectEntry를 공용 타입 SkillTriggeredEffectEntry로 승격 - SkillData.effects를 List<SkillTriggeredEffectEntry>로 변경 (기존 flat list는 OnValidate에서 자동 마이그레이션) - SkillLoadoutEntry, PlayerSkillInput 등 소비자 코드 그룹 구조 대응 - 기존 스킬 에셋 마이그레이션 완료 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -24,18 +24,27 @@ namespace Colosseum.Skills
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 젬 효과가 발동될 애니메이션 이벤트 인덱스와 효과 목록입니다.
|
||||
/// 애니메이션 이벤트 인덱스와 해당 타이밍에 발동할 효과 목록입니다.
|
||||
/// SkillData와 SkillGemData 모두에서 사용합니다.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class SkillGemTriggeredEffectEntry
|
||||
public class SkillTriggeredEffectEntry
|
||||
{
|
||||
[Tooltip("OnEffect(index)와 매칭되는 애니메이션 이벤트 인덱스")]
|
||||
[Min(0)] [SerializeField] private int triggerIndex = 0;
|
||||
[Tooltip("해당 인덱스에서 함께 실행할 추가 효과")]
|
||||
[Tooltip("해당 인덱스에서 함께 실행할 효과 목록")]
|
||||
[SerializeField] private List<SkillEffect> effects = new();
|
||||
|
||||
public int TriggerIndex => triggerIndex;
|
||||
public IReadOnlyList<SkillEffect> Effects => effects;
|
||||
|
||||
public SkillTriggeredEffectEntry() { }
|
||||
|
||||
public SkillTriggeredEffectEntry(int triggerIndex, List<SkillEffect> effects)
|
||||
{
|
||||
this.triggerIndex = Mathf.Max(0, triggerIndex);
|
||||
this.effects = effects ?? new List<SkillEffect>();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -101,7 +110,7 @@ namespace Colosseum.Skills
|
||||
[Tooltip("시전 시작 시 즉시 발동하는 추가 효과")]
|
||||
[SerializeField] private List<SkillEffect> castStartEffects = new();
|
||||
[Tooltip("애니메이션 이벤트 인덱스별로 발동하는 추가 효과")]
|
||||
[SerializeField] private List<SkillGemTriggeredEffectEntry> triggeredEffects = new();
|
||||
[SerializeField] private List<SkillTriggeredEffectEntry> triggeredEffects = new();
|
||||
|
||||
[Header("이상상태 부여")]
|
||||
[Tooltip("스킬 사용 시 자신에게 즉시 부여할 이상상태")]
|
||||
@@ -127,7 +136,7 @@ namespace Colosseum.Skills
|
||||
public IReadOnlyList<SkillGemCategory> IncompatibleCategories => incompatibleCategories;
|
||||
public IReadOnlyList<SkillGemData> IncompatibleGems => incompatibleGems;
|
||||
public IReadOnlyList<SkillEffect> CastStartEffects => castStartEffects;
|
||||
public IReadOnlyList<SkillGemTriggeredEffectEntry> TriggeredEffects => triggeredEffects;
|
||||
public IReadOnlyList<SkillTriggeredEffectEntry> TriggeredEffects => triggeredEffects;
|
||||
public IReadOnlyList<AbnormalityData> SelfAbnormalities => selfAbnormalities;
|
||||
public IReadOnlyList<SkillGemTriggeredAbnormalityEntry> OnHitAbnormalities => onHitAbnormalities;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user