# Phase 3: 스킬 시스템

> 메인 문서: [game-system-overhaul-index.md](game-system-overhaul-index.md)

---

## 목표
MP를 소모하여 스킬을 사용하고, 쿨타임을 관리한다.

## 스킬 구조

```dart
class Skill {
  final String id;
  final String name;
  final SkillType type;     // attack, heal, buff, debuff
  final int mpCost;
  final int cooldownMs;     // 쿨타임 (밀리초)
  final int power;          // 스킬 위력

  // 효과
  final double damageMultiplier;  // 공격 스킬: 데미지 배율
  final int healAmount;           // 회복 스킬: 회복량
  final BuffEffect? buff;         // 버프 효과
}

class SkillState {
  final String skillId;
  final int lastUsedMs;     // 마지막 사용 시간
  final int rank;           // 스킬 레벨

  bool isReady(int currentMs) =>
    currentMs - lastUsedMs >= skill.cooldownMs;
}
```

## MP 시스템

```
MP 회복:
- 비전투 시: 50ms당 1 회복
- 전투 중: 회복 없음 (또는 WIS에 비례하여 느리게 회복)
- 전투 종료: 즉시 전체 회복

MP 소모:
- 스킬 사용 시 즉시 차감
- MP 부족 시 스킬 사용 불가 (일반 공격으로 대체)
```

## 스킬 사용 로직

```
자동 스킬 사용 우선순위:
1. HP < 30% → 회복 스킬 (있으면)
2. 보스전 → 가장 강력한 공격 스킬
3. 일반 전투 → MP 효율이 좋은 스킬
4. MP < 20% → 일반 공격만

수동 개입:
- 현재 버전에서는 자동만 지원
- 향후 수동 스킬 사용 UI 추가 가능
```

## 스킬 목록 예시

| 스킬명 | 타입 | MP | 쿨타임 | 효과 |
|--------|------|-----|--------|------|
| Debug Strike | attack | 10 | 3s | 데미지 150% |
| Memory Leak | attack | 25 | 8s | 데미지 250%, 적 방어력 -20% |
| Hot Reload | heal | 20 | 10s | HP 30% 회복 |
| Safe Mode | buff | 30 | 30s | 방어력 +50%, 10초 지속 |
| Core Dump | attack | 50 | 20s | 데미지 400% |
| Kernel Panic | attack | 100 | 60s | 데미지 800%, 자신 HP -10% |

## 수정 대상 파일

| 파일 | 변경 내용 |
|------|----------|
| `core/model/game_state.dart` | SkillState 추가 |
| `core/model/skill.dart` | **신규** - 스킬 정의 |
| `core/engine/skill_service.dart` | **신규** - 스킬 사용 로직 |
| `core/engine/progress_service.dart` | MP 회복 로직, 스킬 자동 사용 |
| `data/skill_data.dart` | **신규** - 스킬 데이터 |

## 예상 작업량
- 예상 파일 수: 5-6개
- 신규 코드: ~600 LOC
- 수정 코드: ~200 LOC

---
