feat: 젬 이상상태 및 수치형 보정 확장
- SkillGemData와 SkillLoadoutEntry를 확장해 자기 강화/적중 이상상태와 피해·회복·보호막·위협 배율을 해석하도록 정리 - SkillController와 SkillEffect 경로를 보강해 cast start 이상상태, on-hit 이상상태, 반복 시전, 출력 보정이 실제 효과에 반영되도록 연결 - 강인함/약화 테스트 젬과 자기강화/적중이상/상태복합 프리셋, 디버그 메뉴를 추가해 젬 조합 검증 경로를 보강 - 런타임에서 약화 디버프 적용, 강인함+약화 동시 적용, 파쇄/수호/도전자 보정값 해석을 확인
This commit is contained in:
@@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
using Colosseum.Abnormalities;
|
||||
|
||||
namespace Colosseum.Skills
|
||||
{
|
||||
/// <summary>
|
||||
@@ -34,6 +36,21 @@ namespace Colosseum.Skills
|
||||
public IReadOnlyList<SkillEffect> Effects => effects;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 젬이 적중 대상에게 부여할 이상상태 목록입니다.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class SkillGemTriggeredAbnormalityEntry
|
||||
{
|
||||
[Tooltip("OnEffect(index)와 매칭되는 애니메이션 이벤트 인덱스")]
|
||||
[Min(0)] [SerializeField] private int triggerIndex = 0;
|
||||
[Tooltip("해당 인덱스에서 적중 대상에게 부여할 이상상태")]
|
||||
[SerializeField] private List<AbnormalityData> abnormalities = new();
|
||||
|
||||
public int TriggerIndex => triggerIndex;
|
||||
public IReadOnlyList<AbnormalityData> Abnormalities => abnormalities;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 스킬의 기반 효과 위에 추가 동작을 덧붙이는 젬 데이터입니다.
|
||||
/// </summary>
|
||||
@@ -55,6 +72,14 @@ namespace Colosseum.Skills
|
||||
[Min(0f)] [SerializeField] private float cooldownMultiplier = 1f;
|
||||
[Tooltip("장착 시 스킬 애니메이션 재생 속도 배율")]
|
||||
[Min(0.1f)] [SerializeField] private float castSpeedMultiplier = 1f;
|
||||
[Tooltip("장착 시 스킬이 만드는 피해량 배율")]
|
||||
[Min(0f)] [SerializeField] private float damageMultiplier = 1f;
|
||||
[Tooltip("장착 시 스킬이 만드는 회복량 배율")]
|
||||
[Min(0f)] [SerializeField] private float healMultiplier = 1f;
|
||||
[Tooltip("장착 시 스킬이 만드는 보호막량 배율")]
|
||||
[Min(0f)] [SerializeField] private float shieldMultiplier = 1f;
|
||||
[Tooltip("장착 시 스킬이 만드는 위협량 배율")]
|
||||
[Min(0f)] [SerializeField] private float threatMultiplier = 1f;
|
||||
[Tooltip("기반 스킬 시전을 몇 회 더 반복할지 정의합니다. 현재는 계산/표시용으로만 사용됩니다.")]
|
||||
[Min(0)] [SerializeField] private int additionalRepeatCount = 0;
|
||||
|
||||
@@ -64,6 +89,12 @@ namespace Colosseum.Skills
|
||||
[Tooltip("애니메이션 이벤트 인덱스별로 발동하는 추가 효과")]
|
||||
[SerializeField] private List<SkillGemTriggeredEffectEntry> triggeredEffects = new();
|
||||
|
||||
[Header("이상상태 부여")]
|
||||
[Tooltip("스킬 사용 시 자신에게 즉시 부여할 이상상태")]
|
||||
[SerializeField] private List<AbnormalityData> selfAbnormalities = new();
|
||||
[Tooltip("애니메이션 이벤트 인덱스별로 적중 대상에게 부여할 이상상태")]
|
||||
[SerializeField] private List<SkillGemTriggeredAbnormalityEntry> onHitAbnormalities = new();
|
||||
|
||||
public string GemName => gemName;
|
||||
public string Description => description;
|
||||
public Sprite Icon => icon;
|
||||
@@ -71,8 +102,14 @@ namespace Colosseum.Skills
|
||||
public float ManaCostMultiplier => manaCostMultiplier;
|
||||
public float CooldownMultiplier => cooldownMultiplier;
|
||||
public float CastSpeedMultiplier => castSpeedMultiplier;
|
||||
public float DamageMultiplier => damageMultiplier;
|
||||
public float HealMultiplier => healMultiplier;
|
||||
public float ShieldMultiplier => shieldMultiplier;
|
||||
public float ThreatMultiplier => threatMultiplier;
|
||||
public int AdditionalRepeatCount => additionalRepeatCount;
|
||||
public IReadOnlyList<SkillEffect> CastStartEffects => castStartEffects;
|
||||
public IReadOnlyList<SkillGemTriggeredEffectEntry> TriggeredEffects => triggeredEffects;
|
||||
public IReadOnlyList<AbnormalityData> SelfAbnormalities => selfAbnormalities;
|
||||
public IReadOnlyList<SkillGemTriggeredAbnormalityEntry> OnHitAbnormalities => onHitAbnormalities;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user