feat: 드로그 BT 및 전투 패턴 재구성

- 드로그 BT를 페이즈 전환, 부활 트리거, 가중치 근접 패턴 중심으로 재구성

- 땅 울리기 및 콤보-기본기1_3 패턴/스킬/이펙트를 추가하고 기존 평타 파생 자산을 정리

- 드로그 행동 검증용 PlayMode/Editor 테스트와 관련 런타임 상태 추적을 추가
This commit is contained in:
2026-04-09 23:21:38 +09:00
parent 1307123029
commit 7776f7ed05
77 changed files with 449522 additions and 345357 deletions

View File

@@ -41,13 +41,10 @@ public partial class UsePatternByRoleAction : BossPatternActionBase
if (pattern == null)
return Status.Failure;
// 타겟 해석은 ResolveStepTarget에서 처리
// 여기서는 RegisterPatternUse만 호출 (근접 패턴 전용)
if (pattern.IsMelee)
{
BossBehaviorRuntimeState context = GameObject.GetComponent<BossBehaviorRuntimeState>();
context?.RegisterPatternUse(pattern);
}
// 타겟 해석은 ResolveStepTarget에서 처리됩니다.
// 대형 패턴/징벌 패턴 후 기본 루프 강제 규칙이 유지되도록 모든 패턴 사용을 기록합니다.
BossBehaviorRuntimeState context = GameObject.GetComponent<BossBehaviorRuntimeState>();
context?.RegisterPatternUse(pattern);
// base.OnStart는 TryResolvePattern → ExecuteCurrentStep 호출
return base.OnStart();
@@ -71,16 +68,25 @@ public partial class UsePatternByRoleAction : BossPatternActionBase
{
pattern = Pattern?.Value;
target = Target != null ? Target.Value : null;
BossBehaviorRuntimeState context = GameObject.GetComponent<BossBehaviorRuntimeState>();
if (pattern == null)
{
context?.LogDebug(nameof(UsePatternByRoleAction), "실행 실패: Pattern이 비어 있습니다.");
return false;
}
BossBehaviorRuntimeState context = GameObject.GetComponent<BossBehaviorRuntimeState>();
if (context == null || !context.IsPatternReady(pattern))
{
context?.LogDebug(nameof(UsePatternByRoleAction), $"실행 실패: 패턴 준비 안 됨 - {pattern.PatternName}");
return false;
}
if (target == null)
{
context?.LogDebug(nameof(UsePatternByRoleAction), $"실행 실패: 타겟 없음 - {pattern.PatternName}");
return false;
}
return true;
}