game/prompt/10_add_shield_and_armor_mec...

2.3 KiB

방패 아이템 추가 및 방어 메커니즘 개편

목표

게임에 '방패(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 업데이트