feat: 회피 상태와 스킬 시작 판정 분리

- CanEvade를 제거하고 IsEvading 상태와 CanStartSkill 판정으로 정리
- 침묵 중 회피 상태 유지와 회피 스킬 차단 규칙을 반영
- 자동 검증 러너와 디버그 HUD에 회피 상호작용 검증을 추가
This commit is contained in:
2026-03-19 18:51:41 +09:00
parent 975dea8b93
commit 0c26853b2a
7 changed files with 118 additions and 26 deletions

View File

@@ -123,8 +123,6 @@ namespace Colosseum.Player
if (slotIndex < 0 || slotIndex >= skillSlots.Length)
return;
bool isEvadeSlot = slotIndex == skillSlots.Length - 1;
SkillData skill = skillSlots[slotIndex];
if (skill == null)
{
@@ -133,14 +131,8 @@ namespace Colosseum.Player
}
// 사망 상태 체크
if (actionState != null)
{
if (isEvadeSlot && !actionState.CanEvade)
return;
if (!isEvadeSlot && !actionState.CanUseSkills)
return;
}
if (actionState != null && !actionState.CanStartSkill(skill))
return;
// 로컬 체크 (빠른 피드백용)
if (skillController.IsExecutingSkill)
@@ -176,21 +168,12 @@ namespace Colosseum.Player
if (slotIndex < 0 || slotIndex >= skillSlots.Length)
return;
bool isEvadeSlot = slotIndex == skillSlots.Length - 1;
SkillData skill = skillSlots[slotIndex];
if (skill == null) return;
// 서버에서 다시 검증
// 사망 상태 체크
if (actionState != null)
{
if (isEvadeSlot && !actionState.CanEvade)
return;
if (!isEvadeSlot && !actionState.CanUseSkills)
return;
}
if (actionState != null && !actionState.CanStartSkill(skill))
return;
if (skillController.IsExecutingSkill || skillController.IsOnCooldown(skill))
return;
@@ -279,7 +262,7 @@ namespace Colosseum.Player
SkillData skill = GetSkill(slotIndex);
if (skill == null) return false;
if (actionState != null && !actionState.CanUseSkills)
if (actionState != null && !actionState.CanStartSkill(skill))
return false;
return !skillController.IsOnCooldown(skill) && !skillController.IsExecutingSkill;