Files
asciinevrdie/doc/task-ext-items.md
JiWoong Sul b110b2dc53 docs: 게임 시스템 개편 계획 문서 분리
- 121KB 단일 문서를 22개 태스크 문서로 분리
- 메인 인덱스 문서 (game-system-overhaul-index.md) 생성
- Phase 1-10 태스크 문서 10개 분리
- 추가 시스템 태스크 문서 10개 분리
- 재미 요소 설계 문서 1개 분리
- 기존 문서는 archive/ 폴더로 이동
2025-12-16 19:33:57 +09:00

10 KiB

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

메인 문서: game-system-overhaul-index.md


1. 세트 아이템

1.1 세트 아이템 구조

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 아이템 강화

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 아이템 합성

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 인벤토리 구조

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 자동 정리

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 소모품 데이터 구조

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초
특수 소모품 없음