feat: 무적 이상상태 기반 구르기 스킬 정리

- 무적 이상상태 데이터와 효과 에셋을 추가
- 구르기를 일반 스킬이 무적 상태를 부여하는 구조로 변경
- 대미지 처리와 플레이어 상태 판정이 무적 이상상태를 참조하도록 정리
This commit is contained in:
2026-03-19 19:16:32 +09:00
parent 0c26853b2a
commit 287ff4dc83
15 changed files with 166 additions and 55 deletions

View File

@@ -56,10 +56,9 @@ namespace Colosseum.Player
public SkillData CurrentSkill => skillController != null ? skillController.CurrentSkill : null;
/// <summary>
/// 현재 시전 중인 스킬이 회피 스킬일 때의 회피 상태 여부.
/// 침묵은 회피 상태 자체를 끊지 않으며, 회피 스킬의 신규 사용만 막습니다.
/// 무적 이상상태 여부
/// </summary>
public bool IsEvading => IsCastingSkill && CurrentSkill != null && CurrentSkill.IsEvadeSkill;
public bool IsDamageImmune => abnormalityManager != null && abnormalityManager.IsInvincible;
/// <summary>
/// 입력을 받아도 되는지 여부
@@ -79,23 +78,20 @@ namespace Colosseum.Player
/// <summary>
/// 일반 스킬 시작 가능 여부
/// </summary>
public bool CanUseSkills => CanReceiveInput && !IsStunned && !IsSilenced && !IsEvading && !BlocksSkillUseForCurrentSkill();
public bool CanUseSkills => CanReceiveInput && !IsStunned && !IsSilenced && !BlocksSkillUseForCurrentSkill();
/// <summary>
/// 특정 스킬의 시작 가능 여부.
/// 회피 스킬도 일반 스킬과 같은 시작 판정을 사용하되, 현재 시전 중인 스킬의 회피 차단 정책을 따릅니다.
/// 스킬 이름과 무관하게 동일한 시작 규칙을 사용니다.
/// </summary>
public bool CanStartSkill(SkillData skill)
{
if (skill == null)
return false;
if (!CanReceiveInput || IsStunned || IsSilenced || IsEvading)
if (!CanReceiveInput || IsStunned || IsSilenced)
return false;
if (skill.IsEvadeSkill)
return !BlocksEvadeForCurrentSkill();
return !BlocksSkillUseForCurrentSkill();
}
@@ -148,13 +144,5 @@ namespace Colosseum.Player
return CurrentSkill == null || CurrentSkill.BlockOtherSkillsWhileCasting;
}
private bool BlocksEvadeForCurrentSkill()
{
if (!IsCastingSkill)
return false;
return CurrentSkill == null || CurrentSkill.BlockEvadeWhileCasting;
}
}
}