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