# Phase 4: 사망/부활 시스템 > 메인 문서: [game-system-overhaul-index.md](game-system-overhaul-index.md) --- ## 목표 사망 개념을 도입하고, 페널티 및 부활 메커니즘을 구현한다. ## 사망 조건 ``` 사망 = HP <= 0 사망 시 처리: 1. 게임 루프 일시 정지 2. 장착 중인 모든 장비 제거 (인벤토리로 이동하지 않음 - 상실) 3. 인벤토리 아이템 유지 4. 골드 유지 5. 경험치 유지 (레벨 다운 없음) 6. 사망 UI 표시 (부활 버튼) ``` ## 부활 프로세스 ``` 부활 버튼 클릭 시: 1. HP/MP 전체 회복 2. 부활 위치로 이동 (안전 지역: 마을) 3. 자동으로 샵 이동 4. 골드로 구매 가능한 최고 장비 자동 구매 5. 각 슬롯에 장비 자동 장착 6. 게임 루프 재개 (퀘스트 진행도 유지) ``` ### 부활 위치 | 상황 | 부활 위치 | 설명 | |------|----------|------| | 일반 사망 | 마을 (시작 지점) | 안전 지역, 샵 접근 가능 | | 보스전 사망 | 보스 던전 입구 | 보스방 직전 | | 퀘스트 중 사망 | 퀘스트 시작 지점 | 퀘스트 진행도 유지 | ### 부활 페널티 완화 (선택적) | 아이템/스킬 | 효과 | |------------|------| | 부활의 부적 (소모품) | 사망 시 장비 1개 보존 | | 영혼 보호 (패시브) | 사망 시 50% 확률로 장비 1개 보존 | | 불사 버프 | 사망 시 HP 1로 생존 (1회) | ## 샵 시스템 ```dart class Shop { /// 현재 레벨에서 구매 가능한 장비 목록 List getAvailableItems(int playerLevel, int gold); /// 최적의 장비 세트 자동 구매 PurchaseResult autoBuy(int playerLevel, int gold, List emptySlots); } class PurchaseResult { final List purchased; final int totalCost; final int remainingGold; } ``` ## 장비 가격 공식 ``` 기본 가격 = 아이템 레벨 * 50 * 희귀도 배율 희귀도 배율: - Common: 1.0 - Uncommon: 2.0 - Rare: 5.0 - Epic: 15.0 - Legendary: 50.0 판매 가격 = 구매 가격 * 0.3 ``` ## 사망 UI ``` ┌─────────────────────────────────────┐ │ │ │ YOU DIED │ │ │ │ Level 45 버그 헌터 │ │ │ │ 사망 원인: 커널 패닉 │ │ │ │ ───────────────────────── │ │ 장비 상실: 7개 │ │ 보유 골드: 15,420 │ │ ───────────────────────── │ │ │ │ [ 부활하기 ] │ │ │ └─────────────────────────────────────┘ ``` ## 수정 대상 파일 | 파일 | 변경 내용 | |------|----------| | `core/model/game_state.dart` | isDead 플래그, deathInfo 추가 | | `core/engine/progress_service.dart` | 사망 판정 로직 | | `core/engine/resurrection_service.dart` | **신규** - 부활 처리 | | `core/engine/shop_service.dart` | **신규** - 샵 로직 | | `features/game/widgets/death_overlay.dart` | **신규** - 사망 UI | | `features/game/game_session_controller.dart` | 사망/부활 상태 관리 | ## 예상 작업량 - 예상 파일 수: 6-7개 - 신규 코드: ~500 LOC - 수정 코드: ~200 LOC ---