# 방패 아이템 추가 및 방어 메커니즘 개편 ## 목표 게임에 '방패(Shield)' 장비 슬롯을 추가하고, 전투 중 '방어(Defend)' 행동의 효율 계산 방식을 공격력(ATK) 기반에서 방어력(Armor) 기반으로 변경합니다. ## 요청 사항 ### 1. 장비 슬롯 및 아이템 속성 확장 - **EquipmentSlot 추가:** `shield` 슬롯을 추가합니다. (기존: weapon, armor, accessory) - **Item 속성 추가:** 아이템에 물리적 방어력을 나타내는 `armorBonus` 속성을 추가합니다. - 방패(Shield)와 갑옷(Armor) 아이템은 주로 `armorBonus`를 제공해야 합니다. - 기존 갑옷(Armor) 아이템이 MaxHP를 올려주던 컨셉을 유지할지, 방어력으로 변경할지 결정이 필요하나, 요청에 따라 **방패는 Armor 포인트**를 올려주는 역할을 합니다. ### 2. 캐릭터 스탯 로직 변경 - **Total Armor 계산:** 캐릭터의 총 방어력(`totalArmor`)은 `기본 방어력 + 장착 아이템의 armorBonus 합계`로 계산됩니다. - **기본 스탯:** 캐릭터 생성 시 적절한 기본 방어력(Base Armor)을 부여하거나 0으로 시작합니다. ### 3. 전투 시스템 (방어 행동) 변경 - **Defend 메커니즘 수정:** - 기존: `Armor Gained = Total ATK * Efficiency` - **변경:** `Armor Gained = Total Armor * Efficiency` - 즉, 방어력이 높을수록 방어 행동(Defend) 시 더 단단한 일시적 보호막(Temporary Armor)을 얻게 됩니다. - *주의:* `totalArmor`가 0이면 방어 행동의 효과가 0이 되므로, 최소한의 기본 방어력을 보장하거나 로직을 조정해야 합니다. ### 4. UI 및 아이템 생성 로직 업데이트 - **인벤토리 화면:** 방패 슬롯을 UI에 표시하고, 아이콘을 지정합니다. - **보상 시스템:** 전투 승리 보상 목록에 '방패'가 등장하도록 추가합니다. - **스탯 프리뷰:** 장비 교체 팝업 등에서 `Armor` 스탯의 변화도 보여주어야 합니다. ## 관련 파일 - `lib/game/model/item.dart`: `EquipmentSlot`, `Item` 필드 수정 - `lib/game/model/entity.dart`: `totalArmor` getter 추가 및 관련 로직 - `lib/providers/battle_provider.dart`: `defend` 로직 수정, 방패 드랍 로직 추가 - `lib/screens/inventory_screen.dart`: UI 업데이트