EerieVillage/Assets/Scripts/Skills/Interfaces/IPassiveSkill.cs

48 lines
1.7 KiB
C#

namespace EerieVillage.Skills
{
/// <summary>
/// 패시브 스킬 런타임 계약. 장착 즉시 상시 적용 + 일부는 조건부 트리거.
/// BT12-Dev v1 §2-1 정합.
/// </summary>
public interface IPassiveSkill : ISkillRuntime
{
/// <summary>상시 적용 여부 (true = 장착 즉시 효과 · false = 조건부)</summary>
bool IsAlwaysOn { get; }
/// <summary>
/// 장착·해제·Lv 업 시 인벤토리의 PlayerStats에 보정값 반영.
/// 스탯 상승형(P-A)·주기 단축(P-B)·생존 강화(P-C)·자원 확장(P-E)은 모두 이 경로.
/// </summary>
void ApplyModifier(PlayerStats stats);
/// <summary>해제 시 보정값 원복</summary>
void RemoveModifier(PlayerStats stats);
/// <summary>
/// 조건부 패시브(P11 호신부·P16 단전수련 등) 전용.
/// OnPlayerDamaged·OnEnemyKilled·OnTimer 이벤트 구독 후 조건 충족 시 효과 발동.
/// </summary>
void OnTrigger(PassiveTriggerContext ctx);
}
/// <summary>패시브 조건부 트리거 컨텍스트. BT12-Dev v1 §2-1 정합.</summary>
public struct PassiveTriggerContext
{
public PassiveTriggerKind Kind;
/// <summary>OnPlayerDamaged 전용</summary>
public float DamageTaken;
/// <summary>OnEnemyKilled 전용 (누적)</summary>
public int KillCount;
/// <summary>OnTimer 전용</summary>
public float TimeElapsed;
}
/// <summary>패시브 트리거 종류. BT12-Dev v1 §2-1 정합.</summary>
public enum PassiveTriggerKind
{
OnPlayerDamaged,
OnEnemyKilled,
OnTimer
}
}