# 아이템 확장: 세트/강화/인벤토리/물약

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

---

## 1. 세트 아이템

### 1.1 세트 아이템 구조

```dart
class ItemSet {
  final String id;
  final String name;
  final List<String> itemIds;     // 세트 구성 아이템
  final Map<int, SetBonus> bonuses; // 착용 개수별 보너스
}

class SetBonus {
  final int requiredCount;        // 필요 착용 개수
  final String description;       // "2세트: 공격력 +10%"
  final Map<StatType, double> statBonuses;
  final PassiveEffect? passiveEffect;
}
```

### 1.2 세트 목록 예시

| 세트명 | 부위 | 2세트 | 4세트 | 6세트 |
|--------|------|-------|-------|-------|
| **디버거의 유산** | 무기, 방어구, 투구, 장갑, 부츠, 반지 | 공격력 +10% | 크리티컬 +15% | 스킬 데미지 +25% |
| **널 가드** | 방패, 방어구, 투구, 장갑, 부츠, 목걸이 | 방어력 +15% | 블록률 +10% | 피해 반사 10% |
| **컴파일러의 지혜** | 지팡이, 로브, 모자, 장갑, 부츠, 반지 | MP +20% | 마법 데미지 +15% | 스킬 쿨타임 -20% |
| **가비지 컬렉터** | 무기, 중갑, 투구, 장갑, 부츠, 벨트 | HP +20% | 전투 후 HP 5% 회복 | 사망 시 50% 확률로 생존 |

### 1.3 세트 UI

```
┌─ 장착 장비 ─────────────────────────┐
│                                     │
│  디버거의 유산 [4/6] ✨             │
│  ├─ 디버거의 검 ☑                  │
│  ├─ 디버거의 갑옷 ☑                │
│  ├─ 디버거의 투구 ☑                │
│  ├─ 디버거의 장갑 ☑                │
│  ├─ 디버거의 부츠 ☐                │
│  └─ 디버거의 반지 ☐                │
│                                     │
│  세트 효과:                         │
│  ✓ 2세트: 공격력 +10%              │
│  ✓ 4세트: 크리티컬 +15%            │
│  ○ 6세트: 스킬 데미지 +25%         │
│                                     │
└─────────────────────────────────────┘
```

---

## 2. 강화/합성 시스템

### 2.1 아이템 강화

```dart
class EnhancementSystem {
  /// 강화 시도
  EnhanceResult enhance(Equipment item, int gold) {
    final successRate = getSuccessRate(item.enhanceLevel);
    final success = random() < successRate;

    if (success) {
      return EnhanceResult.success(
        item.copyWith(enhanceLevel: item.enhanceLevel + 1),
      );
    } else {
      // 실패 시 강화 레벨 유지 (파괴 없음)
      return EnhanceResult.failure();
    }
  }
}
```

### 2.2 강화 단계

| 강화 레벨 | 성공률 | 비용 배율 | 스탯 증가 |
|----------|--------|----------|----------|
| +1 | 90% | 1x | +5% |
| +2 | 80% | 2x | +10% |
| +3 | 70% | 3x | +15% |
| +4 | 60% | 4x | +20% |
| +5 | 50% | 5x | +30% |
| +6 | 40% | 7x | +40% |
| +7 | 30% | 10x | +50% |
| +8 | 20% | 15x | +65% |
| +9 | 10% | 20x | +80% |
| +10 | 5% | 30x | +100% |

### 2.3 아이템 합성

```dart
class SynthesisSystem {
  /// 동일 아이템 3개 → 상위 희귀도 1개
  Equipment? synthesize(List<Equipment> items) {
    if (items.length != 3) return null;
    if (!_isSameItem(items)) return null;

    final baseItem = items.first;
    final nextRarity = _getNextRarity(baseItem.rarity);

    if (nextRarity == null) return null; // 이미 최고 희귀도

    return baseItem.copyWith(rarity: nextRarity);
  }
}
```

### 2.4 합성 규칙

```
Common x3    → Uncommon x1
Uncommon x3  → Rare x1
Rare x3      → Epic x1
Epic x3      → Legendary x1
Legendary    → 합성 불가
```

### 2.5 강화/합성 UI

```
┌─ 대장간 ────────────────────────────┐
│                                     │
│ [강화] [합성]                       │
│                                     │
│ ┌───────────────────────────────┐   │
│ │  디버거의 검 +3               │   │
│ │  공격력: 45 (+15%)            │   │
│ │  희귀도: Rare                 │   │
│ └───────────────────────────────┘   │
│                                     │
│ 강화 정보:                          │
│   현재: +3 → +4                    │
│   성공률: 60%                       │
│   비용: 2,000 골드                  │
│   스탯 증가: +15% → +20%           │
│                                     │
│         [ 강화하기 ]                │
│                                     │
└─────────────────────────────────────┘
```

---

## 3. 인벤토리 관리

### 3.1 인벤토리 구조

```dart
class Inventory {
  final int maxSlots;             // 최대 슬롯 수
  final List<InventoryItem> items;

  int get usedSlots => items.length;
  int get freeSlots => maxSlots - usedSlots;
  bool get isFull => freeSlots <= 0;
}
```

### 3.2 인벤토리 크기

| 레벨 | 기본 슬롯 | 확장 가능 |
|------|----------|----------|
| 1-20 | 30 | +10 (골드) |
| 21-50 | 40 | +15 (골드) |
| 51-80 | 55 | +20 (골드) |
| 81-100 | 75 | +25 (골드) |
| 최대 | 100 | - |

### 3.3 정렬 옵션

| 정렬 기준 | 설명 |
|----------|------|
| 최근 획득 | 획득 시간 내림차순 |
| 희귀도 | 전설 > 에픽 > 레어 > ... |
| 레벨 | 아이템 레벨 내림차순 |
| 이름 | 가나다/ABC 순 |
| 슬롯 | 무기 → 방어구 → 악세서리 |
| 가중치 | 높은 가중치 우선 |

### 3.4 필터 옵션

| 필터 | 옵션 |
|------|------|
| 슬롯 | 전체, 무기, 방어구, 악세서리 등 |
| 희귀도 | 전체, Common ~ Legendary |
| 장착 가능 | 현재 레벨에서 장착 가능한 것만 |
| 세트 | 세트 아이템만 |

### 3.5 자동 정리

```dart
class InventoryAutoClean {
  /// 인벤토리 자동 정리
  void autoClean(Inventory inventory, AutoCleanSettings settings) {
    if (settings.sellCommon) {
      _sellByRarity(ItemRarity.common);
    }
    if (settings.sellBelowLevel) {
      _sellBelowLevel(settings.minLevel);
    }
    if (settings.keepBestPerSlot) {
      _keepBestPerSlot(settings.keepCount);
    }
  }
}
```

### 3.6 인벤토리 UI

```
┌─ 인벤토리 [45/50] ──────────────────┐
│                                     │
│ [정렬: 희귀도 ▼] [필터: 전체 ▼]    │
│                                     │
│ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐     │
│ │ ★ │ │ ★ │ │ ◆ │ │ ◆ │ │ ○ │ ... │
│ │검 │ │갑 │ │방 │ │투 │ │단 │     │
│ └───┘ └───┘ └───┘ └───┘ └───┘     │
│                                     │
│ 선택: 디버거의 검 +3                │
│ 공격력 +45, 크리티컬 +5%           │
│                                     │
│ [장착] [판매] [강화] [분해]         │
│                                     │
│ ───────────────────────────────── │
│ [ 자동 정리 ] [ 일괄 판매 ]         │
└─────────────────────────────────────┘
```

---

## 4. 물약/소모품 시스템

### 4.1 소모품 종류

| 카테고리 | 아이템 | 효과 | 획득 방법 |
|----------|--------|------|----------|
| **HP 물약** | 소형 HP 물약 | HP +100 | 상점, 드롭 |
| | 중형 HP 물약 | HP +300 | 상점, 드롭 |
| | 대형 HP 물약 | HP +500 | 상점, 드롭 |
| | 최상급 HP 물약 | HP 100% 회복 | 보스 드롭, 제작 |
| **MP 물약** | 소형 MP 물약 | MP +50 | 상점, 드롭 |
| | 중형 MP 물약 | MP +150 | 상점, 드롭 |
| | 대형 MP 물약 | MP +300 | 상점, 드롭 |
| | 최상급 MP 물약 | MP 100% 회복 | 보스 드롭, 제작 |
| **버프 물약** | 공격력 물약 | ATK +20%, 5분 | 상점, 제작 |
| | 방어력 물약 | DEF +20%, 5분 | 상점, 제작 |
| | 경험치 물약 | EXP +50%, 5분 | 이벤트, 퀘스트 |
| | 골드 물약 | GOLD +50%, 5분 | 이벤트, 퀘스트 |
| | 행운 물약 | 드롭률 +30%, 5분 | 희귀 드롭 |
| **특수 소모품** | 귀환 스크롤 | 마을로 즉시 이동 | 상점 |
| | 부활의 부적 | 사망 시 장비 1개 보존 | 보스 드롭 |
| | 감정 스크롤 | 미감정 아이템 감정 | 상점 |

### 4.2 소모품 데이터 구조

```dart
class Consumable {
  final String id;
  final String name;
  final ConsumableType type;    // hp, mp, buff, special
  final int value;              // 회복량 또는 효과 수치
  final Duration? duration;     // 버프 지속 시간
  final int maxStack;           // 최대 중첩 수 (인벤토리)
  final int buyPrice;
  final int sellPrice;
}

class ConsumableInventory {
  final Map<String, int> items; // id -> 수량

  void use(String id);
  void add(String id, int amount);
  bool has(String id) => (items[id] ?? 0) > 0;
}
```

### 4.3 자동 사용 설정

```
┌─ 물약 자동 사용 설정 ───────────────┐
│                                     │
│ HP 물약 자동 사용                   │
│   ● 켜기  ○ 끄기                   │
│   HP가 [30]% 이하일 때 사용         │
│   사용 우선순위: [소형 > 중형 > 대형]│
│                                     │
│ MP 물약 자동 사용                   │
│   ● 켜기  ○ 끄기                   │
│   MP가 [20]% 이하일 때 사용         │
│                                     │
│ 버프 물약 자동 사용                 │
│   ○ 켜기  ● 끄기                   │
│   (보스전에서만 자동 사용)          │
│                                     │
└─────────────────────────────────────┘
```

### 4.4 물약 쿨타임

| 물약 종류 | 쿨타임 |
|----------|--------|
| HP 물약 | 3초 |
| MP 물약 | 3초 |
| 버프 물약 | 60초 |
| 특수 소모품 | 없음 |

---
