48 lines
1.7 KiB
C#
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
|
||
|
|
}
|
||
|
|
}
|