feat: 방어 시스템과 드로그 검증 경로 정리

- 애니메이션 이벤트 기반 방어/유지/해제 흐름과 HUD 피드백, 방어 디버그 로그를 추가했다.
- 드로그 기본기1 테스트 패턴을 정리하고 공격 판정을 OnEffect 기반으로 옮기며 드로그 범위 효과의 타겟 레이어를 정상화했다.
- 플레이어 퀵슬롯 테스트 세팅과 적-플레이어 겹침 방지 로직을 조정해 충돌 시 적이 수평 이동을 멈추고 최소 분리만 수행하게 했다.
This commit is contained in:
2026-04-07 21:28:52 +09:00
parent 147e9baa25
commit 0c9967d131
72 changed files with 231096 additions and 698 deletions

View File

@@ -31,6 +31,10 @@ namespace Colosseum.Skills.Effects
[Tooltip("스탯 계수 (1.0 = 100%)")]
[Min(0f)] [SerializeField] private float statScaling = 1f;
[Header("Mitigation")]
[Tooltip("이 피해가 방어/회피 규칙에서 어떤 판정으로 처리되는지 설정합니다.")]
[SerializeField] private DamageMitigationTier mitigationTier = DamageMitigationTier.Normal;
public float BaseDamage => baseDamage;
public DamageType DamageKind => damageType;
public float StatScaling => statScaling;
@@ -46,7 +50,7 @@ namespace Colosseum.Skills.Effects
var damageable = target.GetComponent<IDamageable>();
if (damageable != null)
{
damageable.TakeDamage(totalDamage, caster);
damageable.TakeDamage(new DamageContext(totalDamage, caster, mitigationTier));
}
}

View File

@@ -27,6 +27,10 @@ namespace Colosseum.Skills.Effects
[Tooltip("다운 상태 대상에게 적용되는 추가 피해 배율")]
[Min(1f)] [SerializeField] private float downedDamageMultiplier = 1.5f;
[Header("Mitigation")]
[Tooltip("이 피해가 방어/회피 규칙에서 어떤 판정으로 처리되는지 설정합니다.")]
[SerializeField] private DamageMitigationTier mitigationTier = DamageMitigationTier.Normal;
protected override void ApplyEffect(GameObject caster, GameObject target)
{
if (target == null)
@@ -49,7 +53,7 @@ namespace Colosseum.Skills.Effects
totalDamage *= downedDamageMultiplier;
}
damageable.TakeDamage(totalDamage, caster);
damageable.TakeDamage(new DamageContext(totalDamage, caster, mitigationTier));
}
/// <summary>