feat: 드로그 집행 개시 패턴 및 낙인 디버프 추가

- 드로그 시그니처 패턴 역할과 집행 개시 패턴 데이터를 추가하고 BT 브랜치에 연결
- 시그니처 차단 성공과 실패 흐름을 BossCombatBehaviorContext에 구현하고 authoring 그래프를 재구성
- 집행자의 낙인 이상상태를 추가하고 받는 피해 배율 증가가 플레이어 대미지 계산에 반영되도록 정리
- 집행 실패 시 광역 피해, 넉백, 다운, 낙인 부여 설정을 드로그 프리팹에 연결
- 성공 경로 검증 중 확인된 보스 Hit 트리거 오류를 방어 로직으로 수정
- Unity 플레이 검증으로 집행 개시 실패와 성공 분기를 모두 확인하고 설계값은 원복
This commit is contained in:
2026-03-23 18:14:18 +09:00
parent 8182258102
commit 0889bb0f25
19 changed files with 1635 additions and 747 deletions

View File

@@ -103,7 +103,9 @@ namespace Colosseum.Player
{
if (isDead.Value || IsDamageImmune()) return;
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - damage);
float finalDamage = damage * GetIncomingDamageMultiplier();
float actualDamage = Mathf.Min(finalDamage, currentHealth.Value);
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - actualDamage);
if (currentHealth.Value <= 0f)
{
@@ -272,8 +274,9 @@ namespace Colosseum.Player
{
if (!IsServer || isDead.Value || IsDamageImmune()) return 0f;
float actualDamage = Mathf.Min(damage, currentHealth.Value);
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - damage);
float finalDamage = damage * GetIncomingDamageMultiplier();
float actualDamage = Mathf.Min(finalDamage, currentHealth.Value);
currentHealth.Value = Mathf.Max(0f, currentHealth.Value - actualDamage);
if (currentHealth.Value <= 0f)
{
@@ -300,6 +303,14 @@ namespace Colosseum.Player
{
return abnormalityManager != null && abnormalityManager.IsInvincible;
}
private float GetIncomingDamageMultiplier()
{
if (abnormalityManager == null)
return 1f;
return Mathf.Max(0f, abnormalityManager.IncomingDamageMultiplier);
}
#endregion
}
}