refactor: 집행개시 시그니처 전용 경로를 BT 일반 패턴 스텝으로 통합

- PatternStepType.ChargeWait 및 ChargeStepData 도입으로 충전/차단 판정을 일반 패턴 스텝으로 표현
- UsePatternByRoleAction에서 IsSignature 분기 완전 제거, 일반 패턴 경로로 통합
- BossCombatBehaviorContext에서 시그니처 전용 메서드 10개 이상 제거
- BossStaggerAction(신규): 충전 차단 성공 시 보스 경직 처리
- SignatureFailureEffectsAction(신규): 차단 실패 시 범위 피해/넉백/다운 적용
- RebuildDrogBehaviorAuthoringGraph에 시그니처 Sequence + outcomeBranch 구조 추가
- 집행개시 에셋 스텝 구성을 ChargeWait(3초) → Skill으로 변경
- BossHealthBarUI 시그니처 UI 비활성화, PlayerSkillDebugMenu 디버그 메서드 제거
This commit is contained in:
2026-04-01 14:21:38 +09:00
parent 0a0bc45209
commit e9e6257ad4
14 changed files with 2054 additions and 1893 deletions

View File

@@ -1,5 +1,7 @@
using UnityEngine;
using System.Collections.Generic;
using Colosseum.Abnormalities;
using Colosseum.Skills;
namespace Colosseum.AI
@@ -32,7 +34,33 @@ namespace Colosseum.AI
Utility,
}
public enum PatternStepType { Skill, Wait }
public enum PatternStepType { Skill, Wait, ChargeWait }
/// <summary>
/// ChargeWait 스텝의 차단 관련 설정 데이터입니다.
/// 충전 대기 중 플레이어가 누적 피해를 충족하면 차단 성공으로 처리됩니다.
/// </summary>
[System.Serializable]
public class ChargeStepData
{
[Header("차단 조건")]
[Tooltip("차단에 필요한 누적 피해 비율 (보스 최대 체력 기준)")]
[Range(0f, 1f)]
[SerializeField] private float requiredDamageRatio = 0.1f;
[Header("전조 효과")]
[Tooltip("충전 중 부여할 전조 이상상태 (루핑 VFX 등)")]
[SerializeField] private AbnormalityData telegraphAbnormality;
[Header("차단 성공 효과")]
[Tooltip("차단 성공 시 보스 경직 시간")]
[Min(0f)]
[SerializeField] private float staggerDuration = 2f;
public float RequiredDamageRatio => requiredDamageRatio;
public AbnormalityData TelegraphAbnormality => telegraphAbnormality;
public float StaggerDuration => staggerDuration;
}
[System.Serializable]
public class PatternStep
@@ -40,6 +68,9 @@ namespace Colosseum.AI
public PatternStepType Type = PatternStepType.Skill;
public SkillData Skill;
[Min(0f)] public float Duration = 0.5f;
[Tooltip("ChargeWait 타입 전용 차단 설정")]
public ChargeStepData ChargeData;
}
/// <summary>
@@ -54,7 +85,7 @@ namespace Colosseum.AI
[Header("패턴 특성")]
[Tooltip("패턴 분류 — grace period 판단에 사용")]
[SerializeField] private PatternCategory category = PatternCategory.Basic;
[Tooltip("시그니처 패턴 여부 — 전용 실행 경로 사용")]
[Tooltip("시그니처 패턴 여부 — 현재 사용되지 않음 (ChargeWait 스텝으로 대체)")]
[SerializeField] private bool isSignature;
[Tooltip("근접 패턴 여부 — meleePatternCounter 갱신")]
[SerializeField] private bool isMelee;