game/prompt/42_item_rarity_and_tier.md

52 lines
3.7 KiB
Markdown

# 42. 아이템 시스템 고도화: 희귀도, 티어 및 랜덤 생성 (Item System Enhancement: Rarity, Tier & Random Generation)
## 목표 (Objective)
아이템 시스템을 전면적으로 개편하여 게임의 깊이와 파밍의 재미를 더합니다. 단순한 스탯 증가가 아닌, 희귀도(Rarity)에 따른 **접두사(Prefix) 시스템**과 **랜덤 이름 생성(Random Name Generation)**을 도입하여 아이템의 다양성을 확보하고, 보상 시스템을 개선하여 플레이어에게 더 나은 경험을 제공합니다.
## 주요 변경 사항 (Key Changes)
### 1. 희귀도 시스템 (Rarity System)
- **`ItemRarity` Enum 정의:**
- **`magic` (파랑):** 기본 등급. 50% 확률로 접두사(Prefix)가 붙어 소폭의 스탯 보너스를 받음.
- **`rare` (노랑):** 상위 등급. **100% 확률로 랜덤 이름(Name Generator)이 생성**되며, 강력한 접두사 효과(다중 스탯 보너스)가 적용됨.
- **`legendary` (주황):** 전설 등급. 고유한 이름과 강력한 효과 유지.
- **`unique` (보라):** 최상위 등급. 게임을 뒤집을 수 있는 특수 능력 보유.
- **설정:** `ThemeConfig``ItemConfig`에서 색상 및 등장 확률(60/30/9/1) 관리.
### 2. 티어 및 스케일링 (Tier & Scaling)
- **티어 구분 (`ItemTier`):**
- `tier1`: 1라운드 (지하 불법 투기장)
- `tier2`: 2라운드 (콜로세움)
- `tier3`: 3라운드 (왕의 투기장)
- **스케일링 제거:** 밸런스 조정을 용이하게 하기 위해, 기존의 '스테이지 비례 스탯 자동 증가' 로직을 제거하고, 티어별 고정 스탯과 접두사 시스템으로 대체함.
### 3. 접두사 시스템 (Prefix System)
- **데이터 (`ItemPrefixTable`):**
- **Magic 접두사:** "Sharp"(공+2), "Sturdy"(체+10) 등 단일 스탯 강화.
- **Rare 접두사:** "Deadly"(공+5, 운+5), "Guardian's"(방+3, 체+20) 등 복합/강력 스탯 강화.
- **슬롯 필터링:** 접두사마다 적용 가능한 장비 슬롯(`allowedSlots`)을 지정하여, 방패에 '치명적인'이 붙는 등의 어색함 방지.
### 4. 랜덤 이름 생성기 (Name Generator)
- **목적:** Rare 등급 아이템의 특별함을 강조하기 위해 기존 이름 대신 멋진 랜덤 이름을 부여.
- **구조 (`NameGenerator`):**
- **형용사 + 명사 조합:** "Crimson Reaper", "Shadow Guard" 등.
- **슬롯별 명사 풀:** 무기(Fang, Blade), 방어구(Wall, Plate), 방패(Aegis, Barrier) 등 부위에 맞는 명사 사용.
- **적용:** Rare 아이템 생성 시 100% 확률로 이름이 변경됨 (스탯은 Rare 접두사 효과를 따름).
### 5. 보상 시스템 (Reward System)
- **골드 보상:**
- 전투 승리 시 골드(10 + 스테이지*5 + 랜덤) 자동 획득.
- 보상 팝업 헤더 우측 상단에 획득 골드량 표시.
- **아이템 보상:**
- 현재 스테이지 티어에 맞는 아이템 3종 랜덤 제시.
- **스킵 옵션 ("Skip Reward"):** 원하지 않는 아이템을 받지 않고 넘어갈 수 있는 선택지 추가.
- **UI 개선:** 희귀도별 텍스트 색상 및 테두리 적용으로 시각적 정보 강화.
## 구현 완료 항목 (Implementation Status)
- [x] `ItemRarity`, `ItemTier` Enum 및 데이터 모델 업데이트.
- [x] `items.json` 데이터 마이그레이션 (Common->Magic, Epic->Legendary 등).
- [x] `ItemTable.getRandomItem` 구현 (가중치 기반 랜덤 선택).
- [x] `ItemPrefixTable``NameGenerator` 구현.
- [x] `ItemTemplate.createItem` 로직 수정 (접두사 및 랜덤 이름 적용).
- [x] `InventoryScreen``BattleScreen` UI 업데이트 (희귀도 색상, 보상 팝업 개선).
- [x] 테스트 코드(`item_rarity_tier_test.dart`, `item_random_test.dart`) 업데이트 및 검증 완료.